数据科学与R语言R语言学习r语言学习

玩转ggplot2

2017-12-24  本文已影响40人  Leahlijuan

(注:本文基于RStudio环境)

ggplot2是什么

ggplot2 是R语言中的一个包,用于绘图功能,相比于自带的plot函数,绘制的图形更加优美,如图


用plot函数绘制的图形
用ggplot函数绘制的图形

玩转ggplot2

载入包

对于初次使用这个包的用户,需要先进行安装ggplot2包
install.packages("ggplot2")
安装后,每次使用前,需要进行载入
library(ggplot2)

ggplot的特别之处

ggplot函数的特别之处在于它是分图层的绘图函数,也就是说绘制它的坐标轴和点线是分开的。一个基本的ggplot图像的语句应当是这样的

ggplot(data,aes(x,y))+
  geom_xx()+
  annotate()+
  labs()

第一行语句表示绘制坐标轴,x和y声明的是作为坐标轴的变量,值得一提的是aes(),是美学的意思,在接下来的介绍中我们可以看到,添加到aes()里的东西,会有神奇的效果。
第二行语句表示绘制点、线等其它图形,其中的xx可以是line, point, bar, histogram等,分别表示不同的图形样式。并且,由于ggplot函数是图层形式的,不同的图形可以叠加,如

ggplot(mtcars,aes(mpg,wt))+
 geom_line()+
 geom_point()

效果如图

点线叠加效果图
第三行语句annotate()表示添加文本注释;第四行语句表示添加标题以及横轴纵轴的名称,如
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+
  annotate("text",x=4,y=20,label="Yes")+
  labs(title="hello",x="xxx",y="yyy")+

效果如图


添加标签效果图

利用ggplot绘制不同形状的图形

利用语句ggplot(mtcars,aes(mpg,wt))+geom_point()可以绘制点图,将geom_point改为geom_line geom_bar 等语句,则可以绘制出不同形状的图形,并且不同的图形可以通过加号叠加起来。

利用ggplot进行分组作图

若要以一个标量为依据,进行分组作图,只需要将进行分组的变量放进语句aes()中即可,如ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()就是将离散型变量vs作为分组依据进行作图,并以颜色作为区分依据(factor函数将vs变量转化为因子形式,如果不进行转化,即使vs是离散型变量,也会被系统默认为连续型变量)

离散型分组作图
如果作为分组依据的变量是连续型变量,则不同组别的图形就会是渐变式的,如
ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()
连续型分组作图

另外,还需要强调一点,如果不打算进行分组,只是想指定图形的颜色,语句应当为ggplot(mtcars,aes(wt,mpg))+geom_point(color="blue")

指定颜色
如果此时仍然把color语句放进aes中,ggplot(mtcars,aes(wt,mpg,color="blue"))+geom_point(),这时候,系统会默认blue是一个作为分组依据的变量,而搜寻没有发现这个变量,就会把它当做一个普通常量,因此不进行分组,图形颜色就是系统默认的红色
image.png

利用ggplot绘制分面的图形

单变量分面

分面实际上类似于分组作图,只不过区分形式不仅仅是颜色不同,还把横轴纵轴区分开来,如

ggplot(mtcars,aes(mpg,wt))+
  geom_point(color="blue")+
  #facet_grid(vs~.)  #按照y轴切分
  facet_grid(.~vs)  #按照x轴切分
按x轴切分

在上述语句中,vs作为切分变量

双变量分面

顾名思义,双变量分面作图也即是用两个变量作为切分依据,因此把图形分成了四块,如

ggplot(mtcars,aes(mpg,wt))+
  geom_point(color="blue")+
  facet_grid(am~vs)
双变量分面

在上述语句中,进行了双变量分面,x轴按照am变量切分,y轴按照vx变量切分。

上一篇下一篇

猜你喜欢

热点阅读