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