前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R数据可视化之ggplot2 (一)

R数据可视化之ggplot2 (一)

作者头像
小莹莹
发布2018-04-23 10:24:16
1.9K0
发布2018-04-23 10:24:16
举报

学完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画图的风格,先画出坐标轴框架,再一层一层的往上添加,每一层都可以设定一些参数,以改变图层的样子,至于有哪些参数,以及怎么用,再接下来会慢慢讲到.欢迎继续阅读.

未完待续

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PPV课数据科学社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档