1. 首页
  2. 数据分析

R数据可视化之ggplot2 (一)

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) #绘制点图R数据可视化之ggplot2 (一)

#绘制点线图 在高级绘图函数上添加一个低级绘图函数 plot(pressure$temperature, pressure$pressure, type=”l”)R数据可视化之ggplot2 (一) points(pressure$temperature, pressure$pressure)R数据可视化之ggplot2 (一) #添加第二条点线图,同样是添加低级绘图函数 lines(pressure$temperature, pressure$pressure/2, col=”red”) points(pressure$temperature, pressure$pressure/2, col=”red”)R数据可视化之ggplot2 (一)

qplot:qplot(mtcars$wt, mtcars$mpg) #绘制点图R数据可视化之ggplot2 (一)

qplot(pressure$temperature, pressure$pressure, geom=”line”) #绘制线图 其中geom就控制画什么类型图R数据可视化之ggplot2 (一)

qplot(temperature, pressure, data=pressure, geom=c(“line”, “point”)) #绘制点线图R数据可视化之ggplot2 (一)

ggplot:ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() #绘制点图R数据可视化之ggplot2 (一)

ggplot(pressure, aes(x=temperature, y=pressure)) + geom_line() #绘制线图R数据可视化之ggplot2 (一)

ggplot(pressure, aes(x=temperature, y=pressure)) + geom_line() + geom_point() #绘制点线图,相当于图层一个个叠加上去R数据可视化之ggplot2 (一)

2.画条形图

基础绘图系统:barplot(BOD$demand, names.arg=BOD$Time) #当变量为数值型,绘制条形图R数据可视化之ggplot2 (一)

barplot(table(mtcars$cyl)) #当变量为因子型,绘制频数条形图R数据可视化之ggplot2 (一)

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

ggplot:ggplot(BOD, aes(x=Time, y=demand)) + geom_bar(stat=”identity”) #当为数据框时,一个变量表示分类,另一个表示其数 值,我们需要在第二个图层也就是geom_bar内指定统计变换为””identity”即不做变化,若需要绘制计数条形图,则stat=”identity”当然这是默认的状态.R数据可视化之ggplot2 (一) ggplot(mtcars, aes(x=factor(cyl))) + geom_bar() #当变量为因子型,绘制频数条形图,而且不用指定yR数据可视化之ggplot2 (一)

3.画直方图

基础绘图系统:hist(mtcars$mpg) #绘制直方图R数据可视化之ggplot2 (一) hist(mtcars$mpg, breaks=10) #修改组数R数据可视化之ggplot2 (一)

qplot:qplot(mpg, data=mtcars, binwidth=4) #绘制直方图,其中binwidth用于修改竖块的宽度R数据可视化之ggplot2 (一)

ggplot:ggplot(mtcars, aes(x=mpg)) + geom_histogram(binwidth=4) #绘制直方图R数据可视化之ggplot2 (一)

4:箱线图:

基础绘图系统:plot(ToothGrowth$supp, ToothGrowth$len) #当一个为分类型,一个为连续型自动绘制成箱线图R数据可视化之ggplot2 (一) boxplot(len ~ supp, data = ToothGrowth) #当一个为分类型,一个为连续型绘制成箱线图R数据可视化之ggplot2 (一) boxplot(len ~ supp + dose, data = ToothGrowth) #二个分类型,箱线图,图中有离群点R数据可视化之ggplot2 (一)

qplot:qplot(ToothGrowth$supp, ToothGrowth$len, geom=”boxplot”)R数据可视化之ggplot2 (一)

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

这就是基本绘图与ggplot绘图的画箱线图的原理不同R数据可视化之ggplot2 (一)

ggplot:ggplot(ToothGrowth, aes(x=supp, y=len)) + geom_boxplot()R数据可视化之ggplot2 (一)

ggplot(ToothGrowth, aes(x=interaction(supp, dose), y=len)) + geom_boxplot() #二个分类型,箱线图R数据可视化之ggplot2 (一)

5.函数曲线:

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

#自定义一个函数 myfun <- function(xvar) { 1/(1 + exp(-xvar + 10)) } curve(myfun(x), from=0, to=20) #绘制自定义函数R数据可视化之ggplot2 (一) curve(1-myfun(x), add = TRUE, col = “red”) #添加一个函数曲线R数据可视化之ggplot2 (一)

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

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


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


未完待续,

PPV原创文章,严禁转载. (文:@白加黑治感冒)

原文始发于微信公众号(PPV课数据科学社区):R数据可视化之ggplot2 (一)

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/13397

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息