ggplot2学习(二):修改外观

课本学习
(最新的Salaries数据集是在carData包中,而书本的car包没有更新)

1、修改坐标轴

自定义坐标轴的函数


image.png

例子:

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="") 
image.png

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)) 
image.png

这个例子中,图例的左上角是分别距离左侧边缘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(发动机排量)的标尺,并使用它来控制点
的尺寸。

image.png

离散的例子:

ggplot(data=Salaries, aes(x=yrs.since.phd, y=salary, color=rank)) +
     scale_color_manual(values=c("orange", "olivedrab", "navy")) +
     geom_point(size=2) 
image.png

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) 

6、保存图形

image.png

你可能感兴趣的:(ggplot2学习(二):修改外观)