玩转ggplot2

作者: Leahlijuan | 来源:发表于2017-12-24 23:09 被阅读40次

    (注:本文基于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变量切分。

    相关文章

      网友评论

        本文标题:玩转ggplot2

        本文链接:https://www.haomeiwen.com/subject/fgkkgxtx.html