ggplot2主题专栏02:时尚又商业范儿十足的ggthemr扩展包

【简说基因】ggplot2 是一种面向数据的绘图系统,可以先进行数据相关的绘图以探索数据,最后呈现结果时,再通过主题控制所有非数据元素。

ggthemr 是一个 ggplot2 的主题扩展包,其设计理念是:你只需设置主题,然后就可以忘记它,无需改变任何现有代码。主题有几个部分:

  • 背景、坐标轴、网格线、文字等的颜色调色板。

  • 坐标轴线和网格线的布局。

  • 图形和周围元素之间的间距(即轴标题到轴线等)。你可以设置间距来确定绘图是紧凑还是分散。

  • 文字大小。

ggthemr 提供许多预设的调色板和布局,并且可以创建自己的颜色方案。

安装

这个包目前还处于开发过程中,可以通过 devtools 下载:

devtools::install_github('Mikata-Project/ggthemr')

用法

ggthemr(
  palette = "dust",
  layout = "clear",
  spacing = 1,
  text_size = 12,
  type = "inner",
  line_weight = 0.5,
  set_theme = TRUE
)

只需要设置颜色方案:

ggthemr('dust')

就这样,你之后创建的所有 ggplot2 图形都将应用该主题。这是因为 ggthemr 在设置主题时做了三件事情:

  1. 使用 ggplot2::theme_set() 函数将默认的 ggplot2 主题更新为指定的 ggthemr 主题。

  2. 使用 ggplot2::update_geom_defaults() 函数修改所有几何图元的美学默认值。

  3. 为全局环境中所有不同的标度创建函数。

你可以使用以下命令清除主题,使画图环境恢复成 ggplot2 的默认设置:

ggthemr_reset()

调色版

flat

library(ggplot2)
library(ggthemr)

p = ggplot(mpg, aes(class, fill = drv)) +
  geom_bar(width = 0.7) +
  theme(legend.position = "top")

ggthemr("flat")
p
6dd86c222b657d8043be6834935f0ac4.png

flat dark

ggthemr("flat dark")
p
5790739e38a6566f96fa3b6dbb77d0e7.png

camouflage

ggthemr("camouflage")
p
58dc1d23ce0055ae3b5a4c53e31fafc3.png

chalk

ggthemr("chalk")
p
23987f949a8acc9160ec67ea3e56b066.png

copper

ggthemr("copper")
p
fd92d7c599029c53a99f647839f20f5c.png

dust

ggthemr("dust")
p
9856e0923c0e274d80899ef924ae0bdd.png

earth

ggthemr("earth")
p
c8df48adcabb05809559189e726f93d4.png

fresh

ggthemr("fresh")
p
04d429c80260881d3530e4a244fc9b35.png

grape

ggthemr("grape")
p
a1c42105d792d8224ee40b1e5adfd667.png

grass

ggthemr("grass")
p
22fcf73ce47d64fd228aab2fc79ed775.png

greyscale

ggthemr("greyscale")
p
d804facac89d1b8722168afc045e18ea.png

light

ggthemr("light")
p
4b6d5a58f9714e776921e09ebedbba3e.png

lilac

ggthemr("lilac")
p
c2319c696f1259d682c30c0630045741.png

pale

ggthemr("pale")
p
d9726ea3a991765a81d009e2f6339da1.png

sea

ggthemr("sea")
p
c08392b69fe1c4dd60037c690288a027.png

sky

ggthemr("sky")
p
e0437074ac3430fad76aabddb6bf9e8a.png

solarized

ggthemr("solarized")
p
bac663f8b25a366e3bc94c032a958d8e.png

定制调色板

可以通过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)
p
063455651bb1bb7557177e4f49368c8c.png

布局

主题的布局控制轴、网格线和文本的外观和位置。有些人喜欢主网格线和次网格线,有些人不喜欢或介于两者之间。

Clear (默认)

ggthemr('flat', layout = "clear")
p
b23284f2958451aa29074dc0bbefb73c.png

Clean

ggthemr('flat', layout = "clean")
p
e1c1bf0598de6c98a4d07973b405878c.png

Minimal

ggthemr('flat', layout = "minimal")
p
4735a4c4ac428a69ae29605670c738f2.png

Plain

ggthemr('flat', layout = "plain")
p
fbe9a49f776dd83be4c9d81a4d37e43c.png

Scientific

ggthemr('flat', layout = "scientific")
p
add655e41cfd5a84df0bbf014ae98568.png

间距

绘图边距和轴标题与线之间的间距等由间距参数控制。较低的值将使绘图更紧凑,较高的值将使元素之间有更多空白。下面的图中,间距分别设置为 0、1 和 2 进行比较。

间距为 0

ggthemr('flat', spacing = 0)
p
813aa37aea954d7579fb5b67b3e98d53.png

间距为 1

ggthemr('flat', spacing = 1)
p
4773360bec65c830e4e26203a4c2c13d.png

间距为 2

ggthemr('flat', spacing = 2)
p
efc7e3a640eddffb5edaa0d80313b742.png

类型

type参数可以设置为下面 2 个之一:

  • inner: 绘图的背景颜色将不会延伸超过绘图区域。

  • outer:图形的整个区域都会着色。

ggthemr('solarized', type = "inner")
p
3ef4ad6cfaf87d5e32e629b6252338c6.png
ggthemr('solarized', type = "outer")
p
3a219b5f2add8d22357fbba1240cc030.png

调整主题

有一些函数可以用来调节图形的明暗程度:

  • darken_swatch() / lighten_swatch(): 调暗/调亮样本颜色。

  • darken_gradient() / lighten_gradient(): 调暗/调亮渐变颜色。

  • darken_palette() / lighten_palette(): 调暗/调亮所有颜色。

调暗:

ggthemr('solarized', type = "outer")

darken_palette(amount = 0.5)
p
f9289a9ff26eb3e2eb48bde2c5f0181e.png

调亮:

ggthemr('solarized', type = "outer")

lighten_palette(amount = 0.5)
p
70af09c19248ddc0b04e715fb0e5f284.png

调整图形

设置主题后,有时候需要对图形做一些微小调整。比如,可以通过 swatch() 函数获得当前调色板中的所有颜色:

ggthemr('solarized', type = "outer")

swatch()
## [1] "#073642" "#268bd2" "#dc322f" "#2aa198" "#b58900" "#6c71c4" "#d33682"
## attr(,"class")
## [1] "ggthemr_swatch"

如果要调换填充色的顺序:

to_swap = swatch()[2:4]
p + scale_fill_manual(values = rev(to_swap))
c9ae61873e258210525b515cd3dec9a3.png

参考资料:

https://github.com/Mikata-Project/ggthemr

专栏文章:

ggplot2 主题专栏 01:内置主题和 ggthemes 扩展包 

——————END——————

关注公众号:简说基因,生信好文。

如果你有数据分析需求,欢迎与我们合作:

  • 【生信科服】临床肿瘤 WES 项目个性化分析内容

  • 【生信科服】转录组数据分析内容

79cf8cebe28890bcbc36856d9223cf02.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/7906.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

49天精通Java,第20天,Date类、Calendar类、date转calendar

目录一、Date类1、创建一个当前时间的Date对象2、获取Date中的信息二、Calendar类1、Calendar类简介2、创建一个代表系统当前日期的Calendar对象3、创建一个指定日期的Calendar对象4、set设置5、add6、使用get获取时间三、日期互转1、Date与long2、Calendar与long3、Date与Cale…

穿梭框后端,java处理实现增删改查

类似这样的穿梭框&#xff0c;可以实现增删改查&#xff1a;实现逻辑如下 1、不做任何操作&#xff0c;点击确定&#xff0c;数据不新增、不删除。 2、右边数据移动到左边&#xff0c;数据库对应的数据删除 3、左边的数据移动到右边&#xff0c;数据库新增一条记录 4、如果…

【文本分类】《基于提示学习的小样本文本分类方法》

阅读摘要&#xff1a;   使用P-turning提示学习&#xff0c;进行小样本文本分类。本文值得学习。 参考文献&#xff1a;   [1]于碧辉,蔡兴业,魏靖烜.基于提示学习的小样本文本分类方法[J/OL].计算机应用:1-6[2023-04-10].http://kns.cnki.net/kcms/detail/51.1307.TP.20230…

usb_cam 相机ROS配置

文章目录运行环境&#xff1a;1.1 usb_cam连接方式&#xff1a;1.2 ROS包下载和编译1.2 运行电脑自带cam1.3 修改launch文件1)不插入 usb_cam 编号查询2)插入 usb_cam 编号查询1.4 运行usb_cam2.1 Rviz显示运行环境&#xff1a; ubuntu20.04 noetic usb_cam 宏基暗影骑士笔记本…

R语言多元数据统计分析在生态环境中的应用

生态环境领域研究中常常面对众多的不同类型的数据或变量&#xff0c;当要同时分析多个因变量&#xff08;y&#xff09;时需要用到多元统计分析&#xff08;multivariate statistical analysis&#xff09;。多元统计分析内容丰富&#xff0c;应用广泛&#xff0c;是非常重要和…

Elasticsearch:高级数据类型介绍

在我之前的文章 “Elasticsearch&#xff1a;一些有趣的数据类型”&#xff0c;我已经介绍了一下很有趣的数据类型。在今天的文章中&#xff0c;我再进一步介绍一下高级的数据类型&#xff0c;虽然这里的数据类型可能和之前的一些数据类型有所重复。即便如此&#xff0c;我希望…

SpringBoot—Spring Data JPA(2)

Spring Data Jpa 方法命名规则 Jpa 中&#xff0c;根据方法命名规则&#xff0c;可以在不用写sql 的情况下&#xff0c;完成数据的操作 规则 例子 根据上一篇文章的数据及接口&#xff0c;在BookDao 接口中&#xff0c;定义一个方法 public interface BookDao extends JpaR…

苹果配摄像头的HomePod专利获批,语音唤醒苹果Find My功能

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司近期获得了一项关于 HomePod 的技术专利。专利草图中为 HomePod 添加了摄像头&#xff0c;让用户更轻松地控制各种智能家居设备。 根据专利描述&#xff0c;苹果在 HomePod 中引入摄像头的目…

Spring注解开发详解

学习基于注解的 IOC 配置&#xff0c;大家脑海里首先得有一个认知&#xff0c;即注解配置和 xml 配置要实现的功能都是一样的&#xff0c;都是要降低程序间的耦合。只是配置的形式不一样。 关于实际的开发中到底使用xml还是注解&#xff0c;每家公司有着不同的使用习惯 , 所以这…

深度学习语义分割篇——FCN原理详解篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;往期回顾&#xff1a;目标检测系列——开山之作RCNN原理详解    目标检测系列——Fast R-CNN原理详解    目标检测系列——Faster R-CNN原理详解 &#x1f34a;近期目标&…

手机怎么投屏到电脑?3个简单的方法教会你!

案例&#xff1a;怎么把手机上的内容投屏到电脑上&#xff1f; 【手机屏幕太小&#xff0c;查看一些内容不太方便。电脑屏幕就比手机大很多&#xff0c;那有没有一种方法可以将手机上的内容投屏到电脑呢&#xff1f;求一个轻松解决手机投屏到电脑上的方法&#xff01;】 如果…

一本通 3.4.2 图的最短路径

《Floyd算法》 算法思想&#xff1a;定义状态D(Ki,j)为经过前k个点i到j的最短路径&#xff0c;动态转移方程&#xff1a;D(k,i,j)min(D(k-1,i,i),D(k-1,i,k)D(k-1,k,j)) k层的前面的计算不会影响后面的计算&#xff0c;可以使用滚动数组进行存储&#xff0c…

FL Studio21中文版本下载及语言切换调整

FL Studio21是一个很好的音乐制作软件。此外&#xff0c;如果你使用接口软件制作音乐&#xff0c;这是非常简单和有效的使用。这将有助于你的工作变得井井有条。此外&#xff0c;它还将为您提供一个集成的开发环境。而且&#xff0c;这个软件是数字音乐。另一方面&#xff0c;该…

Spring循环依赖

前言 不知道大家听过Spring的循环依赖这个问题吗&#xff0c;而且这个问题是面试经常问的&#xff0c;属于Spring的一个比较重要的话题&#xff0c;也比较典型&#xff0c;比较考验一个人对Spring的研究程度 循环依赖问题&#xff0c;本文会通过三个方面来简单介绍 1、什么是…

Chat-GLM 详细部署(GPU显存>=12GB)

建议配置: ( Windows OS 11 部署 )CPU-i7 13700F ~ 13700KF RAM: 16GB DDR4 GPU: RTX3080(12G) 安装 conda: 1. 下载安装 miniconda3 &#xff1a; https://docs.conda.io/en/latest/miniconda.html conda是一个包和环境管理工具&#xff0c;它不仅能管理包&#xff0c;还能隔…

PMP如何备考,才能一次通过呢?

首先规划一下备考时间&#xff0c;一般情况下&#xff0c;建议准备1-3个月&#xff0c;需要项目管理PMP备考资料可在文末获取。 时间太短无法吃透知识点&#xff0c;临阵磨枪&#xff0c;靠运气都是不行的&#xff0c;必须要扎实的学习一个月以上&#xff0c;但超过三个月&…

AM62X +FPGA+AD/DA 的TSN工业网关解决方案

德州仪器(TI)推出了新的高度集成处理器Sitara AM62&#xff0c;旨在将边缘人工智能(AI)处理扩展到下一代应用程序&#xff0c;新处理器的低功耗设计支持双屏幕显示和小型人机界面(HMI&#xff1a; Human-Machine Interface)应用。工程师可以根据现场要求&#xff0c;在任何地方…

vue实现轨迹回放(很详细)

效果 功能 时间搜索查询轨迹并生成&#xff08;默认是当前的一天的时间&#xff09; 图标能跟随路径方向移动 删除了百度logo和版权信息&#xff08;业务需要&#xff0c;不建议删除&#xff09; Vue Baidu Map npm install vue-baidu-map --save main.js import Vue from vu…

Android如何做出带有复杂水印的图片

最近项目中存在图片加水印效果的需求&#xff0c;具体效果如下: 然后做出来的效果如下&#xff1a; 原图水印图 点击可以查看大图&#xff1a;大图 那么针对这种比较复杂的水印图片&#xff0c;应该如何去做呢&#xff1f;下面我分享一下自己的思路。 如果没有使用到NDK&…

Web基础与HTTP协议

HTML概述 HTML叫做超文本标记语言&#xff0c;是一种规范&#xff0c;也是一种标准&#xff0c;它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件&#xff0c;通过在文本文件中添加标记符&#xff0c;可以告诉浏览器如何显示其中的内容。 HTML命令可…
最新文章