前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >99-R可视化27-超级多的ggplot绘图主题大全

99-R可视化27-超级多的ggplot绘图主题大全

作者头像
北野茶缸子
发布2022-04-05 15:12:01
1.2K0
发布2022-04-05 15:12:01
举报
文章被收录于专栏:北野茶缸子的专栏

前言

有时候我们用ggplot 绘图,而并不手动设置theme 参数调整,图片往往是非常朴素的。

代码语言:javascript
复制
p <- ggplot(data = cell_reduction_df) + 
  geom_point(aes(x = UMAP_1, y = UMAP_2, color = cell_anno),
             size = 0.5)
p

这里介绍一下一些ggplot 的各种主题。

1-自带主题

首先就是一些自带主题了,其实也蛮朴素的:

代码语言:javascript
复制
theme_gray() 默认主题,灰色。
theme_bw() 非常适合显示透明度的映射内容。
theme_void() 去除非数据外的全部内容。
theme_classic() # 经典ggplot 主题,白板背景。

但这个theme_bw 我还是挺喜欢用的。

使用的话,我们直接添加给自己的ggplot 对象即可:

代码语言:javascript
复制
p + theme_bw()

2-ggthemes

项目地址在:jrnold/ggthemes: Additional themes, scales, and geoms for ggplot2 (github.com)[1]

里面丰富出了非常多的主题:

代码语言:javascript
复制
主题名 描述
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 风格:

代码语言:javascript
复制
p + theme_excel()

同样的ggthemes 也为每种主题配套了相关的颜色模板:

代码语言:javascript
复制
p <- ggplot(mtcars, aes(mpg, disp, colour = factor(am))) +
  geom_point() 
p + theme_economist() + ggthemes::scale_color_economist()

3-ggthemr

项目地址:Mikata-Project/ggthemr: Themes for ggplot2. (github.com)[2]

也提供了一些好玩的、有意思的主题:

比如这个古铜色,有点丑啊:

代码语言:javascript
复制
ggthemr('copper')
p
# reset2default theme
# ggthemr_reset()

不同于一般的主题配置,ggthemr 包配置需要先全局声明,接着调用的全部对象都会被修改了。

这点操作有点像base 包。

此外,我们还可以对主题进行一定的个性化修改,比如layout 参数,控制背景;spacing 参数控制坐标轴文本与坐标轴距离:

代码语言:javascript
复制
ggthemr('solarized', layout = "minimal",
        spacing = 1.5)
p
  • layout: clean, scientific, plain, clear, minimal, pastel.
  • spacing: 数值型,越大距离越远;
  • type: 默认"outer", "inner" 则主题仅控制坐标内部;

此外还有控制颜色的函数:

代码语言:javascript
复制
darken_swatch() / lighten_swatch(): darker/lighter swatch colours.
darken_gradient() / lighten_gradient(): darker/lighter gradient colours.
darken_palette() / lighten_palette(): darker/lighter everything.

比如让颜色更浅一些,但前提是你需要配置ggthemr 的配色方案:

代码语言:javascript
复制
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:

代码语言:javascript
复制
# 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 调用,直接将颜色主题变为所在主题的对应颜色。

代码语言:javascript
复制
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 的主题对象的:

代码语言:javascript
复制
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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 北野茶缸子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1-自带主题
  • 2-ggthemes
  • 3-ggthemr
    • 叨一叨进阶用法
      • 参考资料
  • 后话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档