您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > R语言案例-R语言案例-30分钟学会ggplot2
30分钟学会ggplot2肖凯xccds1977@gmail.com太极剑法和ggplot2•招无定式•潜力无穷•需要忘记•容易学习内容提要:•简介•基本概念•简单示例•进阶示例•学习资源ggplot2简介•由HadleyWickham于2005年创建•于2012年四月进行了重大更新,最新版本0.91•作者目前的工作是重写代码,简化语法,方便用户开发和使用ggplot2简介•ggplot2isaplottingsystemforR•basedonthe《TheGrammarofGraphics》•whichtriestotakethegoodpartsofbaseandlatticegraphicsandnoneofthebadparts•Ittakescareofmanyofthefiddlydetailsthatmakeplottingahassle•Iteasytoproducecomplexmulti-layeredgraphics为什么要使用ggplot2•用户能在更抽象层面上控制图形,使创造性绘图更容易;•采用图层的设计方式,有利于结构化思维;•图形美观,同时避免繁琐细节。ggplot2的基本概念•数据(Data)和映射(Mapping)•标度(Scale)•几何对象(Geometric)•统计变换(Statistics)•坐标系统(Coordinate)•图层(Layer)•分面(Facet)数据(Data)和映射(Mapping)将数据中的变量映射到图形属性。映射控制了二者乊间的关系。标度(Scale)标度负责控制映射后图形属性的显示方式。具体形式上来看是图例和坐标刻度。Scale和Mapping是紧密相关的概念。几何对象(Geometric)几何对象代表我们在图中实际看到的图形元素,如点、线、多边形等。统计变换(statistics)对原始数据进行某种计算,例如对二元散点图加上一条回归线。Stat坐标系统(Coordinate)坐标系统控制坐标轴幵影响所有图形元素,坐标轴可以进行变换以满足不同的需要。StatCoord图层(Layer)数据、映射、几何对象、统计变换等构成一个图层。图层可以允许用户一步步的构建图形,方便单独对图层进行修改。分面(Facet)条件绘图,将数据按某种方式分组,然后分别绘图。分面就是控制分组绘图的方法和排列形式。ggplot2的基本概念•数据(Data)和映射(Mapping)•标度(Scale)•几何对象(Geometric)•统计变换(Statistics)•坐标系统(Coordinate)•图层(Layer)•分面(Facet)简单示例•散点图•直方图•条形图•饼图•箱线图•二维直方图示例数据str(mpg)'data.frame':234obs.of14variables:$manufacturer:Factorw/15levelsaudi,chevrolet,..:$model:Factorw/38levels4runner4wd,..:$displ:num1.81.8222.82.83.11.81.82...$year:int19991999200820081999199920081999$cyl:int4444666444...$trans:Factorw/10levelsauto(av),auto(l3),..:$drv:Factorw/3levels4,f,r:$cty:int18212021161818181620...$hwy:int29293130262627262528...$fl:Factorw/5levelsc,d,e,p,..:$class:Factorw/7levels2seater,compact,..:library(ggplot2)p-ggplot(data=mpg,mapping=aes(x=cty,y=hwy))p+geom_point()aestheticssummary(p)data:manufacturer,model,displ,year,cyl,trans,drv,cty,hwy,fl,class[234x11]mapping:x=cty,y=hwyfaceting:facet_null()summary(p+geom_point())data:manufacturer,model,displ,year,cyl,trans,drv,cty,hwy,fl,class[234x11]mapping:x=cty,y=hwyfaceting:facet_null()-----------------------------------geom_point:na.rm=FALSEstat_identity:position_identity:(width=NULL,height=NULL)将年份映射到颜色属性p-ggplot(mpg,aes(x=cty,y=hwy,colour=factor(year)))p+geom_point()增加平滑曲线p+geom_point()+stat_smooth()p-ggplot(mpg,aes(x=cty,y=hwy))p+geom_point(aes(colour=factor(year)))+stat_smooth()p-ggplot(mpg,aes(x=cty,y=hwy))p+geom_point(aes(colour=factor(year)))+stat_smooth()d-ggplot()+geom_point(data=mpg,aes(x=cty,y=hwy,colour=factor(year)))+stat_smooth(data=mpg,aes(x=cty,y=hwy))print(d)两种等价的绘图方式此时除了底层画布外,有两个图层,分别定义了geom和stat。summary(d)data:[0x0]faceting:facet_null()-----------------------------------mapping:x=cty,y=hwy,colour=factor(year)geom_point:na.rm=FALSEstat_identity:position_identity:(width=NULL,height=NULL)mapping:x=cty,y=hwygeom_smooth:stat_smooth:method=auto,formula=y~x,se=TRUE,n=80,fullrange=FALSE,level=0.95,na.rm=FALSEposition_identity:(width=NULL,height=NULL)用标度来修改颜色取值p+geom_point(aes(colour=factor(year)))+stat_smooth()+scale_color_manual(values=c('blue','red'))将排量映射到散点大小p+geom_point(aes(colour=factor(year),size=displ))+stat_smooth()+scale_color_manual(values=c('blue2','red4'))p+geom_point(aes(colour=factor(year),size=displ),alpha=0.5,position=jitter)+stat_smooth()+scale_color_manual(values=c('blue2','red4'))+scale_size_continuous(range=c(4,10))p+geom_point(aes(colour=factor(year),size=displ),alpha=0.5,position=jitter)+stat_smooth()+scale_color_manual(values=c('blue2','red4'))+scale_size_continuous(range=c(4,10))+coord_cartesian(xlim=c(15,25),ylim=c(15,40))用坐标控制图形显示的范围利用facet分别显示不同年份的数据p+geom_point(aes(colour=class,size=displ),alpha=0.5,position=jitter)+stat_smooth()+scale_size_continuous(range=c(4,10))+facet_wrap(~year,ncol=1)增加图名幵精细修改图例p-ggplot(mpg,aes(x=cty,y=hwy))p+geom_point(aes(colour=class,size=displ),alpha=0.5,position=jitter)+stat_smooth()+scale_size_continuous(range=c(4,10))+facet_wrap(~year,ncol=1)+opts(title='汽车油耗与型号')+labs(y='每加仑高速公路行驶距离',x='每加仑城市公路行驶距离')+guides(size=guide_legend(title='排量'),colour=guide_legend(title='车型',override.aes=list(size=5)))直方图P-ggplot(mpg,aes(x=hwy))p+geom_histogram()直方图的几何对象中内置有默认的统计变换summary(p+geom_histogram())data:manufacturer,model,displ,year,cyl,trans,drv,cty,hwy,fl,class[234x11]mapping:x=hwyfaceting:facet_null()-----------------------------------geom_histogram:stat_bin:position_stack:(width=NULL,height=NULL)p+geom_histogram(aes(fill=factor(year),y=..density..),alpha=0.3,colour='black')+stat_density(geom='line',position='identity',size=1.5,aes(colour=factor(year)))+facet_wrap(~year,ncol=1)条形图p-ggplot(mpg,aes(x=class))p+geom_bar()class2-mpg$class;class2-reorder(class2,class2,length)mpg$class2-class2P-ggplot(mpg,aes(x=class2))p+geom_bar(aes(fill=class2))根据计数排序后绘制的条形图根据年份分别绘制条形图,position控制位置调整方式p-ggplot(mpg,aes(class2,fill=factor(year)))p+geom_bar(position='identity',alpha=0.5)幵立方式P+geom_bar(position='dodge')叠加方式p+geom_bar(position='stack')相对比例p+geom_bar(position='fill')分面显示p+geom_bar(aes(fill=class2))+facet_wrap(~year)饼图p-ggplot(mpg,aes(x=factor(1),fill=factor(class)))+geom_bar(width=1)p+coord_polar(theta=y)箱线图p-ggplot(
本文标题:R语言案例-R语言案例-30分钟学会ggplot2
链接地址:https://www.777doc.com/doc-4479933 .html