第五部分第19章使用ggplot2进行高级绘图

"学习做图还是以实践为主,因此写好脚本的代码结合笔记梳理思路。这里笔记比较简略。"

19.1 R中四种图形系统

图形系统的载入

系统 基础安装中是否包含 是否需要显示加载
base Y N
grid Y Y
lattice Y Y
ggplot2 N Y

19.2 ggplot2包介绍

ggplot的图采用加号+函数串联起来创建。

library(ggplot2)
ggplot(data=mtcars, aes(x=wt,y=mpg))+
  geom_point()+
  labs(title = "Automobile Data", x="Weight", y="Miles Per Gallon")
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")
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="Automoblie Data by Engine Type", x="Horsepower",y="Miles Per Gallon")
  • ggplot()初始化图形并且指定要用到的数据来源(data)和变量(variable)。
  • aes()函数的功能:映射,指定每个变量扮演的角色。
  • geom()几何函数: 向图中添加了集合对象,包括点、线、条、箱线图和阴影区域。
  • lab()函数:可添加注释,如轴标签和标题。
  • pch=点的形状,size=点的大小,color=点的颜色,linetype=线的类型。
  • 分组:再一个图形中显示两组或多组观察结果。
  • 小面化:在单独、并排的图形上显示观察组。

19.3 用几何函数指定图的类型

常见几何函数

函数 添加 选项
geom_bar() 条形图 color, fill, alpha
geom_boxplot() 箱线图 color, fill, alpha, notch, width
geom_density() 密度图 color, fill, alpha,linetype
geom_histogram() 直方图 color, fill, alpha,linetype,binwidth
geom_hline() 水平线 color, alpha,linetype,size
geom_jitter() 抖动点 color, fill, alpha,shape
geom_line() 线图 colorvalpha, linetype, size
geom_point() 散点图 color, alpha, shape, size
geom_rug() 地毯图 color, side
geom_smooth() 拟合曲线 method, formula, color, fill, linetype, size
geom_text() 文字注解
geom_violin() 小提琴图 color, fill, alpha, linetype
geom_vline() 垂线 color, alpha, linetype, size

几何函数常见选项

选项 详述
color 对点、线和填充区域的边界着色
fill 对填充区域着色
alpha 颜色的透明度,从0-1
linetype 图案的线条,1=实线,2=虚线,3=点,4=点破折号,5=长破折号,6=双破折号
size 点的尺寸和线的宽度
shape 点的形状
position 绘制诸如条形图和点等对象的位置,条形图dodge=分组条形图并排,stacked=堆叠分组条形图,fill=垂直地堆叠分组条形图并规范其高度相等,点jitter=减少点重叠
binwidth 直方图的宽度
notch 方块图是否应为缺口
sides 地毯图的安置(b=底部,l=左部,t=顶部,r=右部,bl=左下部等)
width 箱线图的宽度

19.4 分组

在R中,组通常用分类变量的水平因子来定义。
分组是通过ggplot2图将一个或多个带有诸如形状、颜色、填充、尺寸和线类型的视觉特征的分组变量来完成的。

data("Salaries",package = "car")
ggplot(Salaries, aes(x=salary,fill=rank))+
  geom_density(alpha=.3)
ggplot(Salaries, aes(x=yrs.since.phd, y=salary, color=rank,shape=sex))+
  geom_point()
ggplot(Salaries, aes(x=rank, fill=sex))+
  geom_bar(position = "stack")+labs(title='position="stack"')
ggplot(Salaries, aes(x=rank,fill=sex))+
  geom_bar(position="dodge")+labs(title='position="dodge"')
ggplot(Salaries, aes(x=rank,fill=sex))+
  geom_bar(position="fill")+labs(title='position="fill"')


19.5 刻面

ggplot2的刻面图函数

语法 结果
facet_wrap(~var,ncol=n) 将每个var水平排列成n列的独立图
facet_wrap(~var,nrow=n) 将每个var水平排列成n行的独立图
facet_grid(rowvar~colvar) rowvar和colvar组合的独立图
facet_grid(rowvar~.) 每个rowvar水平的独立图,配置成一个单列
facet——grid(.~colvar) 每个colvar水平的独立图,配置成一个单行

19.6 添加光滑曲线

geom_smooth()函数来添加一系列的平滑曲线和置信区域。

选项 描述
method= 使用平滑函数,lm,glm,smooth,rlm,gam
formula y~x(默认), y~log(x), y~poly(x,n)
se 绘制置信区间
level 使用的置信区间水平(默认95%)
fullrange 指定拟合应涵盖全图或仅仅是数据

19.7 修改ggplot2图形的外观

19.7.1 坐标轴

控制坐标轴和刻度线外观的函数

函数 选项
scale_x_continuous breaks=指定刻度标记,labels=指定刻度标记标签,limits=控制要展示的值的范围
scale_y_continuous
scale_x_discrete breaks=对因子的水平进行放置和排序,labels=指定这些水平的标签,limits=表示哪些水平应该展示
scale_y_discrete
coord_flip() 颠倒x轴和y轴

19.7.2 图例

图例是指出如何用颜色、形状、尺寸等视觉特性表示数据特征的指南。

19.7.3 标尺

使用标尺把数据空间的观察值映射到可视化的空间中。

19.7.4 主题

theme()函数可以调整字体、背景、颜色和网格线等。
主题可以使用一次,也可以保存起来应用到多个图中。

19.7.5 多重图

图形参数mfrow和基本函数layout()把两个或更多的基本图放到单个图形,但在刚ggplot2包中不适用。

ggplot2使用gridExtra包中的grid.arrange()函数,需事先安装。

install.packages("gridExtra")
library(gridExtra)
p1 <- ggplot(data=Salaries, aes(x=rank))+
  geom_bar()
p2 <- ggplot(data = Salaries, aes(x=sex))+
  geom_bar()
p3 <- ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary))+
  geom_point()
grid.arrange(p1,p2,p3, ncol=3)

19.8 保存图形

ggsave()函数保存图形

myplot <- ggplot(data=mtcars, aes(x=mpg))+
  geom_histogram()
ggsave(file="mygraph.png", plot=myplot, width=5, height = 4)

19.9 小结

你可能感兴趣的:(第五部分第19章使用ggplot2进行高级绘图)