本期内容
- ggplot2内置主题
- ggthemes主题
- 主题更新
依然是先画一幅简单的散点图:
library(ggplot2)
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point(aes(color = Petal.Length, size = Petal.Width, shape = Species)) +
scale_color_gradient(low = "#f0cf61", high = "#371722") +
scale_size_continuous(range = c(1, 4)) +
labs(x = "Sepal Length", y = "Sepal Width", title = "Iris Sepal")
p
ggplot2内置主题
通过前几期我们已经知道,ggplot2绘图不做特殊设置的话,一般为如上主题样式(浅灰色背景和白色网格线)。这是ggplot2内置的默认主题:theme_grey(),加上其他7个如下:
theme_grey()
theme_bw()
theme_classic()
theme_dark()
theme_light()
theme_linedraw()
theme_minimal()
theme_void()
更换主题只需:
p + theme_bw()
其它六种主题如下:
ggthemes主题
除此之外我们还可以直接调用ggthemes的22种主题(Function reference • ggthemes (jrnold.github.io)):
效果如下:
主题更新
在以上所有函数中,我们都可以直接设定基础字体及大小,如:
p + theme_bw(base_size = 20, base_family = "serif")
如果不想每一幅图都要修改主题,我们可以直接用theme_set替换掉当前主题:
theme_set(theme_pander(base_size = 15, base_family = "serif"))
print(p)
如上,在替换新主题之后打印的初始图自动应用上了新的主题(同理,你在绘制其它的图片也将直接应用此套主题)。在此基础上,修改主题,有两种方法(theme_update和theme_replace),我们先记录一下当前主题:
old <- theme_get() # 记录当前主题
然后来修改一下网格线的颜色,并记录新的主题:
theme_update(panel.grid = element_line(color = "red"))
new_update <- theme_get()
print(p)
再来使用theme_replace修改主题(在此之前我们先恢复旧的主题):
theme_set(old)
print(p)
theme_replace(panel.grid = element_line(color = "red"))
new_replace <- theme_get()
print(p)
可以看到,以上两种方式都成功将网格线的颜色设置为了红色,但是theme_replace却将虚线改为了实线,这是为什么呢?我们先直接来打印一下刚刚每一步主题的网格线设置:
old$panel.grid
new_update$panel.grid
new_replace$panel.grid
我们可以看到初始的设置中,网格线的设置为颜色为灰色,线条宽度为0.2,线型为虚线。
使用theme_update修改之后,除了颜色变为了红色,其它设置保持不变。
而使用theme_replace,则除了修改颜色以外,只要你不进行设置,其他的设置都将自动设置为NULL(如上linewidth和linetype),即按照默认主题设置。
因此,如果你只是想要在当前主题上进行略微的修改,其他的设置保持不变,用theme_update即可。
而如果想直接清除当前修改的其他设置,则需使用theme_replace。
最后
- 感谢支持,希望对您有帮助!
- 有不足的地方欢迎指正!
- 关注我们,及时获取更多干货!