ggplot做图
eg:ggplot(data = mpg,mapping = aes(x=cty,y = hwy)) + geom_point()
+ aes(colour = factor(mpg$year))
1.其中data = mpg,mapping = aes(x=cty,y=hwy)表示数据层
geom_point表示几何图形层
aes(colout=factor(mpg$year))表示美学层,我们将year隐射到颜色属性
2.如果将代码写成如下格式,则什么也不会出现,因为缺少几何层:
ggplot(data = mpg,mapping = aes(x = cty,y = hwy)
3.加上size=I(),可以确定几何层中点的大小
ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+
geom_point(size=I(4))+aes(colour=factor(mpg$year))
4.我们也可以绘制出它的拟合曲线以及置信区间,它根据年份利用stat_smooth()绘出了两条拟合曲线以及置信区间。
ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point()
+aes(colour=factor(mpg$year))+stat_smooth()
5.如果我们只想绘制一条拟合曲线和一个置信区间,我们只需要将代码稍微改变一下就可以搞定。(将aes()放到了geom_point里面)
ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+
geom_point(aes(colour=factor(mpg$year)))+stat_smooth()
6.在前面,我们将year变量映射到散点的颜色上面,现在我们也可以将displ变量映射到散点大小,绘制出来的大小不同的散点。
ggplot(data=mpg,mapping =aes(x=cty,y=hwy))+
geom_point(aes(colour=factor(year),size=displ))+
stat_smooth()
7.可以改变alpha值得大小来改变散点的透明度。alpha的值在0—1之间,不在这个范围的话则会报错。
为了与前面的图片有明显的区别,我再这里的alpha值调的比较小。一般默认alpha值得大小为1。
ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+
geom_point(aes(colour=factor(mpg$year),size=displ),alpha=0.25)+
stat_smooth()
8.我们也可以给图片增加标题,并精细修改图片,给图片增加x,y轴说明,以及其他说明。
ggplot(mpg, aes(x=cty, y=hwy))+
geom_point(aes(colour=class,size=displ),alpha=0.6,position = "jitter")+
stat_smooth()+
scale_size_continuous(range = c(4, 10))+
facet_wrap(~ year,ncol=1)+
ggtitle("汽车油耗与型号")+
labs(y='每加仑高速公路行驶距离',
x='每加仑城市公路行驶距离')+
guides(size=guide_legend(title='排量'),
colour = guide_legend(title='车型',
override.aes=list(size=5)))
说明:position的函数,通过调整参数来改变图层的位置
fill:填充方式, 先把数据归一化,再填充到绘图区的顶部。
dodge:比如说不同折线的标记有可能重复,可以改变改参数进行一个“避让”方式,即往旁边闪,比如说如柱形图的并排方式。
identity:原地不动,不调整位置,默认。
jitter:如果严重的重叠,随机抖一抖,让本来重叠的露出点头来
stack:在竖直方向叠罗汉,绘制出来类似条形图
9.我们需要把一个变量和其他不同的变量进行一个对比,这个时候我们就需要把他们画在同一张图上面。ggplot2绘图就和Photoshop有一个功能很相似,
那就是 图层, 我们可以把不同的图层叠加在一起,这样就画在了同一张图上面。比如说我们要研究mpg数据中cty和hwy,
以及displ之间的关系,我们就可以通过如下代码,将他们之间的散点图画在一起。
ggplot()+
geom_point(aes(x=mpg$cty,y=mpg$hwy),color="red")+
geom_point(aes(x=mpg$cty,y=mpg$displ),color="green")
10.我们来绘制一个扇形图,我们来统计一下class中各个品牌所占比例
ggplot(mpg)+geom_bar(width=1, aes(x=factor(1),fill=mpg$class))+
coord_polar(theta="y")