R数据可视化之ggplot2 (一)

学完R语言的基本操作后,我们还可以继续学习R的几大著名而且使用强大的包,今天讲其中的一个,就是ggplot2,至于这个包的评价和地位,我就不多说了,感兴趣可以百度,它绝对是数据可视化的利器,好了,我们先来开始简单介绍一下这个包.

先说说我们人手工作图的方式,1,先画一个坐标轴,2,然后根据数据在图上画图形3,在基础的图形上加一些注释,或加一些对比.基本上这就是我们作图的方式,那么ggplot2就跟这差不多了,1.先设定坐标轴和数据2,选择要画图形的类型3,添加一些图形,4,丰富一下图形的信息.ggplot2根据这个步骤,把每一步当做一个图层,每一个图层我们都可以设定一些参数.,基本上讲这么多就行,其原理虽然可以讲的非常详细,但是听了也就是听了,不明觉厉,不如亲自画几个就明白了.一动手就能体会的.

一.画基本图形.

在画基本图形之前,我先说一下qplot这个函数,这个函数是ggplot2包里面的一个函数,简单作图,他的用法可以看做是基本绘图与ggplot绘图的一个过渡.

首先需要加载ggplot2包

library(ggplot2) library(gcookbook) #主要用于获取数据集,若你用自己的数据集便可以不加载

1.画点线图.

基础绘图系统:plot(mtcars$wt, mtcars$mpg) #绘制点图

#绘制点线图 在高级绘图函数上添加一个低级绘图函数 plot(pressure$temperature, pressure$pressure, type="l")

points(pressure$temperature, pressure$pressure)

#添加第二条点线图,同样是添加低级绘图函数 lines(pressure$temperature, pressure$pressure/2, col="red") points(pressure$temperature, pressure$pressure/2, col="red")

qplot:qplot(mtcars$wt, mtcars$mpg) #绘制点图

qplot(pressure$temperature, pressure$pressure, geom="line") #绘制线图 其中geom就控制画什么类型图

qplot(temperature, pressure, data=pressure, geom=c("line", "point")) #绘制点线图

ggplot:ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() #绘制点图

ggplot(pressure, aes(x=temperature, y=pressure)) + geom_line() #绘制线图

ggplot(pressure, aes(x=temperature, y=pressure)) + geom_line() + geom_point() #绘制点线图,相当于图层一个个叠加上去

2.画条形图

基础绘图系统:barplot(BOD$demand, names.arg=BOD$Time) #当变量为数值型,绘制条形图

barplot(table(mtcars$cyl)) #当变量为因子型,绘制频数条形图

qplot: 版本改掉了一些参数,暂时未知

ggplot: ggplot(BOD, aes(x=Time, y=demand)) + geom_bar(stat="identity") #当为数据框时,一个变量表示分类,另一个表示其数 值,我们需要在第二个图层也就是geom_bar内指定统计变换为""identity"即不做变化,若需要绘制计数条形图,则stat="identity"当然这是默认的状态.

ggplot(mtcars, aes(x=factor(cyl))) + geom_bar() #当变量为因子型,绘制频数条形图,而且不用指定y

3.画直方图

基础绘图系统: hist(mtcars$mpg) #绘制直方图

hist(mtcars$mpg, breaks=10) #修改组数

qplot: qplot(mpg, data=mtcars, binwidth=4) #绘制直方图,其中binwidth用于修改竖块的宽度

ggplot: ggplot(mtcars, aes(x=mpg)) + geom_histogram(binwidth=4) #绘制直方图

4:箱线图:

基础绘图系统: plot(ToothGrowth$supp, ToothGrowth$len) #当一个为分类型,一个为连续型自动绘制成箱线图

boxplot(len ~ supp, data = ToothGrowth) #当一个为分类型,一个为连续型绘制成箱线图

boxplot(len ~ supp + dose, data = ToothGrowth) #二个分类型,箱线图,图中有离群点

qplot: qplot(ToothGrowth$supp, ToothGrowth$len, geom="boxplot")

qplot(interaction(ToothGrowth$supp, ToothGrowth$dose), ToothGrowth$len, geom="boxplot") #二个分类型,箱线图,图中有离群点这里是两个,有木有发现?

这就是基本绘图与ggplot绘图的画箱线图的原理不同

ggplot: ggplot(ToothGrowth, aes(x=supp, y=len)) + geom_boxplot()

ggplot(ToothGrowth, aes(x=interaction(supp, dose), y=len)) + geom_boxplot() #二个分类型,箱线图

5.函数曲线:

基础绘图系统: curve(x^3 – 5*x, from=-4, to=4) # 绘制函数曲线,from,to表示x的定义域

#自定义一个函数 myfun <- function(xvar) { 1/(1 + exp(-xvar + 10)) } curve(myfun(x), from=0, to=20) #绘制自定义函数

curve(1-myfun(x), add = TRUE, col = "red") #添加一个函数曲线

qplot: 在新版本中stat参数改动,暂未知

ggplot: ggplot(data.frame(x=c(0, 20)), aes(x=x)) + stat_function(fun=myfun, geom="line")


通过以上对比,我们一看就可以知道,ggplot画图的风格,先画出坐标轴框架,再一层一层的往上添加,每一层都可以设定一些参数,以改变图层的样子,至于有哪些参数,以及怎么用,再接下来会慢慢讲到.欢迎继续阅读.

未完待续

原文发布于微信公众号 - PPV课数据科学社区(ppvke123)

原文发表时间:2016-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI派

带你十分钟快速入门画图神器 Matplotlib

在开始正式介绍 Matplotlib 用法之前,先来简单了解下 Matplotlib。

22510
来自专栏数据小魔方

图表中异常值的特殊截断处理

今天跟大家聊聊在图表制作中异常值的处理方式! 相信大家都遇到过这种情况 用一组数据作图 可是偏偏就遇到那么一两个特变态的异常值 不信自己感受一下 ? 其中有一...

38290
来自专栏游戏杂谈

as3中颜色矩阵滤镜ColorMatrixFilter的使用

上面的例子,也是游戏开发中比较常用的功能,与“怪物”战斗后,将其“灰”掉。这其中最重要的还是对AS3颜色矩阵滤镜(ColorMatrixFilter)的使用。

25030
来自专栏数据结构与算法

洛谷P1317 低洼地

题目描述 一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地? 如图:地高变化为 0 1 0 2 1 2 0...

27840
来自专栏Petrichor的专栏

图像处理: 如何将 像素值 控制在 值域[0, 255]

在做计算机视觉方向项目的时候,往往需要进行图像处理。但是在此过程中,常常会遇到 对 像素值 进行 变换计算 后,像素值 超出 值域区间 [0, 255] 的情况...

18640
来自专栏PPV课数据科学社区

【学习】请速度收藏,Excel常用电子表格公式大全

1、查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,”重复”,””)。 2、用出生年月来计算年龄公式:=TRUNC((DAYS360(H6,”2...

36880
来自专栏数据科学与人工智能

【Python环境】matplotlib - 2D 与 3D 图的绘制

类MATLAB API 最简单的入门是从类 MATLAB API 开始,它被设计成兼容 MATLAB 绘图函数。 让我们加载它: from pylab impo...

62470
来自专栏技术博客

Win8 连连看 第二季(1)

思路如下:暂定游戏中图标有100个(10行10列),对每个小图标用用户控件进行展示(好处很多方便绑定数据,链接事件,实现动画效果等)。

9420
来自专栏图形学与OpenGL

实验2 直线生成算法实现

理解基本图形元素光栅化的基本原理,掌握一种基本图形元素光栅化算法,利用OpenGL实现直线光栅化的DDA算法。

15920
来自专栏PPV课数据科学社区

Excel公式大全,高手进阶必备!

第一部分:常用函数和公式 查找重复内容公式:=IF(COUNTIF(A:A,A2)>1,"重复","")。 用出生年月来计算年龄公式:=TRUNC((DAYS3...

33320

扫码关注云+社区

领取腾讯云代金券