@Macux
2015-12-01T06:51:14.000000Z
字数 2345
阅读 922
R语言_学习笔记
1、ggplot2简介:
ggplot()与qplot()的区别
ggplot2()语法中几个十分重要的概念:
2、准备工作
> library(labeling)
> library(ggplot2)
3、ggplot()的入门
设定默认的x和y的映射为mpt和wt。但此时还无法呈现图形,因为还未构成一个完整的图层。
> p2 <- ggplot(mtcars)+aes(mpg,wt)
有数据,有映射,但无几何对象,即R不知道要如何呈现图像。
> p2 + geom_point(aes(colour=factor(cyl)),size=2.7)
为添加几何对象(散点图),此时第一个图层就完成了。
重新添加几何对象时,这次修改映射到y轴的变量。(只修改数据,但y轴的名称未修改)
> p2 + geom_point(aes(colour=factor(cyl),y = disp),size=2.7)
不仅修改映射,同时修改y轴的名称。此时就完成了整个修改过程,但在这张画布上,仍然只有一个图层。
> px <-p2 + geom_point(aes(colour=factor(cyl),y = disp),size=2.7) + scale_y_continuous("disp")
#此处可用参数scale_colour_brewer(palette="Set1")来找到自己喜欢的配色方案。若映射到颜色的数据是连续型的变量,则用scale_colour_gradient()。由于懒,所以就不上传新图了~
> px
添加新的图层(线条),在新的图层只是添加了不同的几何对象,其余的三个要素与p2是一样的;
由于在新建px时,修改了默认的y轴映射,所以在新建图层,也要做出一样的修改。否则会添加失败;(其深层次的原因在于,必须要保证该图层上的变量类型与标度要与px上的相匹配。)
> px2 <- px + geom_line(aes(colour=factor(cyl),y=disp))
> px2
继续添加新的图层(拟合曲线)
> library(scales)
> px2 + geom_smooth(aes(y=disp),method="lm",colour = alpha("orange",0.8),size=0.7)
> library(nlme)
> p3 <- ggplot(Oxboys,aes(age,height,group=Subject,colour=Subject))+geom_line()
> p3
在细面图上添加总体的拟合曲线
> p3 + geom_smooth(aes(group=1),method="lm",size=1.7,color="black") #group=1表示此时不分组,即对整体数据进行拟合。
添加箱线图图层
> p4 <- ggplot(Oxboys,aes(Occasion,height,fill=Occasion)) + geom_boxplot()
> p4 + geom_line(aes(group=Subject),colour=alpha("black",0.3))
> df <- data.frame(x = 1:3, y = 1:3, colour = c(1, 3, 5))
> xgrid <- with(df,seq(min(x),max(x),length=500))
> interp <- data.frame(x = xgrid,
y = approx(df$x,df$y,xout = xgrid)$y,
colour = approx(df$x,df$colour,xout = xgrid)$y
)
> qplot(x,y,data=df,colour=colour,size=I(5)) + geom_line(data=interp,size=2)
调整前的生肉:
> ggplot(diamonds,aes(x=color)) + geom_bar(aes(fill=cut),position="identity")
position="identity"表示不做任何调整。这显然不合适。因为先画的会被后画的挡住。
调整后的效果:
(1)、堆叠法。默认调整方法。
> ggplot(diamonds,aes(x=color)) + geom_bar(aes(fill=cut),position="stack")
2、并列法
ggplot(diamonds,aes(x=color)) + geom_bar(aes(fill=cut),position="dodge")
3、填充法
ggplot(diamonds,aes(x=color)) + geom_bar(aes(fill=cut),position="fill")
4、扩展法,即用频率多边形(面积)来代替传统的直方图
> d <- ggplot(diamonds, aes(carat)) + xlim(0, 3)
> d + stat_bin(aes(ymax = ..count..,fill=color,color=color),binwidth = 0.1, geom = "area")