1 例子引入
1.ggplot2中,图是采用串联起来的(+)号函数创建的,每个函数修改属于自己的部分。
library("ggplot2")
ggplot(data=mtcars,aes(x=wt,y=mpg))+
geom_point()+
labs(title="Automobile Data",x="weight",y="Miles Per Gallon")
library("ggplot2")
ggplot(data=mtcars,aes(x=wt,y=mpg))+
geom_point(pch=17,color="blue",size=2)+
geom_smooth(method='lm',color='red',linetype=2)+
labs(title="Automobile Data",x="weight",y="Miles Per Gallon")
2.ggplot()函数 初始化图形指定数据源和变量。ggplot()设置图形但没有自己的视觉输出,需要几何函数来添加图形
3.aes()函数指定每个变量扮演的角色
4.geom_point()几何函数,创建散点图
5.geom_smooth()几何函数,创建拟合曲线
6labs()可选函数,用来添加注释。
ggplot2包提供了分组和小面化的方法
分组:在一个图形中显示两组或多组观察结果
小面化:在单独、并排的图形上来显示观察组
mtcars$am<-factor(mtcars$am,levels=c(0,1),labels=c("Automatic","Manual"))
mtcars$vs<-factor(mtcars$vs,levels=c(0,1),labels=c("V-Engine","Straight Engine"))
mtcars$cyl<-factor(mtcars$cyl)
ggplot(data=mtcars,aes(x=hp,y=mpg,shape=cyl,color=cyl))+
geom_point(size=3)+
facet_grid(am~vs)+
labs(title="Automobile Data by Engine Type",x="Horsepower",y="Miles Per Gallon")
2 用几何函数指定图的类型
ggplot()函数指定要绘制的数据源和变量,集合函数则指定这些变量如何在视觉上进行表示(使用点、条、线和阴影区)
函数 | 添加 |
---|---|
geom_bar() | 条形图 |
geom_boxplot() | 箱线图 |
geom_density() | 密度图 |
geom_histogram() | 直方图 |
geom_hline() | 水平线 |
geom_jitter() | 抖动图 |
geom_line() | 线图 |
geom_point() | 散点图 |
geom_rug() | 地毯图 |
geom_smooth() | 拟合曲线 |
geom_text() | 文字注解 |
geom_violin() | 小提琴图 |
geom_vline() | 垂线 |
library(ggplot2)
data(singer,package="lattice")
ggplot(singer,aes(x=height))+geom_histogram()
#注意箱线图要指定出X,y才能达到此效果
ggplot(singer,aes(x=voice.part,y=height))+geom_boxplot()
几何函数还有很多选项可以调整,加以使用
library(ggplot2)
data(Salaries,package="carData")
ggplot(Salaries,aes(x=rank,y=salary))+
geom_boxplot(fill="cornflowerblue",color="black",notch=TRUE)+
geom_point(position="jitter",color="blue",alpha=.5)+
geom_rug(sides="l",color="black")
#箱线图的填充色为cornflowerblue,边线颜色为"black",设置为有凹槽的箱线图
#散点图采取“jitter”,即抖动的形式,颜色为"blue",透明度50%
#地毯图放在左部,颜色为黑色
将小提琴图和箱线图结合成新的图形
data(singer,package="lattice")
ggplot(singer,aes(x=voice.part,y=height))+
geom_violin(fill="lightblue")+
geom_boxplot(fill="lightblue",width=.2)
3 分组
分组是通过ppgplot2图将一个或多个带有诸如颜色、形状、填充、尺寸和线类型的视觉特征的分组变量来完成的。
aes()函数负责分配变量(图形的视觉特征),所以这是一个分配分组变量的自然的地方。
以学术等级分组的大学薪水的密度图
library(car)
data(Salaries,package='car')
library(ggplot2)
ggplot(data=Salaries,aes(x=salary,fill=rank))+geom_density(alpha=.3)
#alpha是设置透明度
博士毕业年数和薪水的散点图
ggplot(Salaries,aes(x=yrs.since.phd,y=salary,color=rank,shape=sex))+geom_point()
分组条形图的三个版本
library(cowplot)
p1<-ggplot(Salaries,aes(x=rank,fill=sex))+
geom_bar(position='stack')+labs(title='position="stack"')
p2<-ggplot(Salaries,aes(x=rank,fill=sex))+
geom_bar(position='dodge')+labs(title='position="dodge"')
p3<-ggplot(Salaries,aes(x=rank,fill=sex))+
geom_bar(position='fill')+labs(title='position="fill"')
plot_grid(p1,p2,p3,ncol=3)
[]:
【可以发现,第三个图应该是比例,y轴的标签是错滴】
关于cowplot包plot_gird函数的拼接使用方法https://www.163.com/dy/article/GRQOPGJ30552BFPX.html
奇奇怪怪的实验
library(cowplot)
p1<-ggplot(Salaries,aes(x=rank,fill=sex))+
geom_bar()
p2<-ggplot(Salaries,aes(x=rank))+
geom_bar(fill='red')
p3<-ggplot(Salaries,aes(x=rank,fill='red'))+
geom_bar()
plot_grid(p1,p2,p3,ncol=3)
图1 :sex通过条形图中填充颜色展示
图2:geom_bar(fill=‘red’)每个条形图都用红色填充
图3:aes(fill=‘red’)假定red是变量的名字
通常变量应该设置在aes()函数内,分配常熟应该在aes()函数外
4 刻面
刻面:也就是网格图形。用facet_wrap()函数和facet_grid()函数实现
这样,组在图中并排出现而不是重叠为单一的图形,关系是清晰的。
data(singer,package='lattice')
library(ggplot2)
ggplot(data=singer,aes(x=height))+geom_histogram()+facet_wrap(~voice.part,nrow=4)
包含刻面和分组的图
ggplot(Salaries,aes(x=yrs.since.phd,y=salary,color=rank,shape=rank))+geom_point()+facet_grid(.~sex)
data(singer,package='lattice')
library(ggplot2)
ggplot(singer,aes(x=height,fill=voice.part))+
geom_density()+
facet_grid(voice.part~.)