有时候我们用ggplot 绘图,而并不手动设置theme 参数调整,图片往往是非常朴素的。
p <- ggplot(data = cell_reduction_df) +
geom_point(aes(x = UMAP_1, y = UMAP_2, color = cell_anno),
size = 0.5)
p
这里介绍一下一些ggplot 的各种主题。
首先就是一些自带主题了,其实也蛮朴素的:
theme_gray() 默认主题,灰色。
theme_bw() 非常适合显示透明度的映射内容。
theme_void() 去除非数据外的全部内容。
theme_classic() # 经典ggplot 主题,白板背景。
但这个theme_bw 我还是挺喜欢用的。
使用的话,我们直接添加给自己的ggplot 对象即可:
p + theme_bw()
项目地址在:jrnold/ggthemes: Additional themes, scales, and geoms for ggplot2 (github.com)[1]
里面丰富出了非常多的主题:
主题名 描述
theme_base 类似于 ggplot 默认设置
theme_calc 类似 LibreOffice Calc 图表
theme_economist 类似经济类图表
theme_economist_white 类似经济类图表
theme_excel 类似经典excel图表
theme_few 简洁型
theme_fivethirtyeight 类似于 http://fivethirtyeight.com的图
theme_foundation 这个主题的设计是为了基础建立新的主题,而不是直接使用。theme_foundation是一个完整的主题,只有最小的元素定义。它相比于theme_gray或theme_bw更容易通过扩展创建新的主题,因为那些主题和有着较深层次的主题定义。
theme_gdocs 类似默认的 Google Docs Chart
theme_hc Highcharts JS
theme_igary 主题与白色面板和灰色背景。
theme_map 一个简洁的地图主题
theme_pander pander的默认主题
theme_solarized 可以看 http://ethanschoonover.com/solarized 的介绍
theme_solarized_2 同上
theme_solid 主题删除所有non-geom元素(线条、文本等),这个主题只有所需的几何对象。
theme_stata 基于 Stata graph schemes的主题
theme_tufte 基于数据墨水最大化和图形设计的Edward Tufte 定量信息的视觉显示。没有边界,没有轴线,没有网格。这个主题与geom_rug或geom_rangeframe结合效果最好。
theme_wsj Wall Street Journal theme
————————————————
版权声明:本文为CSDN博主「炫炫有牛腩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27755195/article/details/52105087
比如这种经典的excel 风格:
p + theme_excel()
同样的ggthemes 也为每种主题配套了相关的颜色模板:
p <- ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
geom_point()
p + theme_economist() + ggthemes::scale_color_economist()
项目地址:Mikata-Project/ggthemr: Themes for ggplot2. (github.com)[2]
也提供了一些好玩的、有意思的主题:
比如这个古铜色,有点丑啊:
ggthemr('copper')
p
# reset2default theme
# ggthemr_reset()
不同于一般的主题配置,ggthemr 包配置需要先全局声明,接着调用的全部对象都会被修改了。
这点操作有点像base 包。
此外,我们还可以对主题进行一定的个性化修改,比如layout 参数,控制背景;spacing 参数控制坐标轴文本与坐标轴距离:
ggthemr('solarized', layout = "minimal",
spacing = 1.5)
p
此外还有控制颜色的函数:
darken_swatch() / lighten_swatch(): darker/lighter swatch colours.
darken_gradient() / lighten_gradient(): darker/lighter gradient colours.
darken_palette() / lighten_palette(): darker/lighter everything.
比如让颜色更浅一些,但前提是你需要配置ggthemr 的配色方案:
ggthemr('solarized', layout = "minimal",
spacing = 1.5)
lighten_swatch(amount = 0.5)
p <- ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
geom_point() +
scale_colour_ggthemr_d()
p
amount 参数调控深浅程度。
此外还有一个有意思的函数define_palette()
可以个性化的设置你的主题并传递给ggthemr:
# Random colours that aren't white.
set.seed(12345)
random_colours <- sample(colors()[-c(1, 253, 361)], 10L)
ugly <- define_palette(
swatch = random_colours,
gradient = c(lower = random_colours[1L], upper = random_colours[2L])
)
ggthemr(ugly)
example_plot + ggtitle(':(')
★You can define all elements of a palette using
define_palette()
including colours for the background, text, axes lines, swatch and gradients. ”
ggthemr 设置颜色还是比较容易的,可以直接通过scale_**_ggthemr_d
调用,直接将颜色主题变为所在主题的对应颜色。
ggthemr('solarized', layout = "minimal",
spacing = 1.5)
p <- ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
geom_point()
p + ggthemr::scale_colour_ggthemr_d()
我们其实是可以获得 ggthmer 的主题对象的:
p <- ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
geom_point()
dust_theme <- ggthemr('dust', set_theme = FALSE)
p + dust_theme$theme + scale_color_manual(values = dust_theme$palette$swatch)
通过设置参数set_theme = FALSE
仅仅获得该主题的配置,而并不在全局调用。
正如上文所述,其实这些包也是默认帮我们选择好配色方案的了。下次有机会来叨一叨ggplot 的配色方案的选择。和颜色斗智斗勇,也是一个有意思的话题。
[1]
jrnold/ggthemes: Additional themes, scales, and geoms for ggplot2 (github.com): https://github.com/jrnold/ggthemes
[2]
Mikata-Project/ggthemr: Themes for ggplot2. (github.com): https://github.com/Mikata-Project/ggthemr