课本学习
(最新的Salaries数据集是在carData包中,而书本的car包没有更新)
1、修改坐标轴
自定义坐标轴的函数
例子:
data(Salaries,package="carData")
library(ggplot2)
ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex)) +
geom_boxplot() +
scale_x_discrete(breaks=c("AsstProf", "AssocProf", "Prof"),
labels=c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")) +
scale_y_continuous(breaks=c(50000, 100000, 150000, 200000),
labels=c("$50K", "$100K", "$150K", "$200K")) +
labs(title="Faculty Salary by Rank and Sex", x="", y="")
2、修改图例(legend)
图例是指出如何用颜色、形状、尺寸等视觉特性表示数据特征的指南。ggplot2包能自动生成图例,而且在很多时候能够满足我们的需求;但是在其他时候,我们可能要对其进行自定义。
标题和位置是最常用的定制特征。
- 当更改图例的标题时,必须考虑图例是否基于颜色、填充、尺寸、形状或它们的组合。图例代表fill审美(见aes()函数),因此我们可以通过将fill="mytitle"加到labs()
函数中来改变标题。 - 标题的位置由theme()函数中的legend.position选项控制。可能的值包括"left"、
"top"、"right"(默认值)和"bottom"。我们也可以在图中给定的位置指定一个二元素向量。调整图形,使图例出现在左上角并且将标题从sex变为Gender。
data(Salaries,package="car")
library(ggplot2)
ggplot(data=Salaries, aes(x=rank, y=salary, fill=sex)) +
geom_boxplot() +
scale_x_discrete(breaks=c("AsstProf", "AssocProf", "Prof"),
labels=c("Assistant\nProfessor",
"Associate\nProfessor",
"Full\nProfessor")) +
scale_y_continuous(breaks=c(50000, 100000, 150000, 200000),
labels=c("$50K", "$100K", "$150K", "$200K")) +
labs(title="Faculty Salary by Rank and Gender",
x="", y="", fill="Gender") +
theme(legend.position=c(.1,.8))
这个例子中,图例的左上角是分别距离左侧边缘10%和底部边缘80%的部分。如果想删除图例,可以使用legend.position="none"。
3、修改标尺
使用标尺把数据空间的观察值映射到可视化的空间中。标尺既可以应用到连续的变量,也可以应用到离散的变量。
ggplot(mtcars, aes(x=wt, y=mpg, size=disp)) +
geom_point(shape=21, color="black", fill="cornsilk") +
labs(x="Weight", y="Miles Per Gallon",
title="Bubble Chart", size="Engine\nDisplacement")
上述代码中,aes()函数的参数size=disp生成连续型变量disp(发动机排量)的标尺,并使用它来控制点
的尺寸。
离散的例子:
ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
scale_color_manual(values=c("orange", "olivedrab", "navy")) +
geom_point(size=2)
1、使用scale_color_manual()函数来设定三个学术等级的点的颜色.
2、可以通过scale_color_brewer()和scale_fill_brewer()函数来预先指定分得清的颜色集,其中,参数palette="Set1"用其他的值(例如"Set2"、"Set3"、"Pastel1"、"Pastel2"、"Paired"、"Dark2"或"Accent")来代替将会产生不同的颜色方案。
4、修改主题(theme)
theme可以看到theme()功能的大量参数,可以实现与外观相关的大多数要求。其中有四种主要类型:
element_text():使用element_text()函数设置基于文本的组件,如title,subtitle 和caption等。
element_line():使用element_line()设置基于线的组件,如轴线,主网格线和次网格线等。
element_rect():使用element_rect()修改基于矩形的组件,如绘图区域和面板区域的背景。
element_blank():使用element_blank()关闭显示的主题内容。
theme()函数中的选项可以让我们调整字体、背景、颜色和网格线等。主题可以使用一次,也可以保存起来应用到多个图中。
theme(plot.title = element_text(hjust = 0.5,size = 20, face = "bold"),axis.text=element_text(size=12,face = "bold"),axis.title.x=element_text(size=14),axis.title.y=element_text(size=14))
注:参数说明
axis.text:改变坐标轴刻度值的字体大小;
axis.title.x和axis.title.y改变x轴和y轴标题字体大小;
binwidth表示的柱形的宽度;
hjust = 0.5大标题居中;
size=20表示大标题字体大小为20
data(Salaries, package="car")
library(ggplot2)
mytheme <- theme(plot.title=element_text(face="bold.italic",
size="14", color="brown"),
axis.title=element_text(face="bold.italic",
size=10, color="brown"),
axis.text=element_text(face="bold", size=9,
color="darkblue"),
panel.background=element_rect(fill="white",
color="darkblue"),
panel.grid.major.y=element_line(color="grey",
linetype=1),
panel.grid.minor.y=element_line(color="grey",
linetype=2),
panel.grid.minor.x=element_blank(),
legend.position="top")
ggplot(Salaries, aes(x=rank, y=salary, fill=sex)) +
geom_boxplot() +
labs(title="Salary by Rank and Sex", x="Rank", y="Salary") +
mytheme
5、多重图
将多个ggplot2包的图形放到单个图形中最简单的方式是使用gridExtra包中的grid.arrange()函数。
data(Salaries, package="car")
library(ggplot2)
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()
library(gridExtra)
grid.arrange(p1, p2, p3, ncol=3)