ggplot2-主题1
简介
在本章中学会如何使用ggplot2主题(theme)系统,主题系统允许对于图像中的非数据元素进行精细的调整。它不会影响几何对象和标度等数据元素。主题不能改变图像的感官性质,但它可以使图像变得更具美观,满足整体一致性的要求。主题的控制包括字体、轴须标签(tick)、面板的条状区域(strip)、背景等
lattice和基础图形系统没有采用数据和非数据控制分离的方法,大部分函数都设定了许多参数来调整数据和非数据的外观,这很容易导致函数的复杂化,使得图像的学习变得更为困难。ggplot2则采用了不同的策略:绘图时,首先确定数据如何展示,之后再用主题系统对细节进行渲染
主题系统由四个主要部分组成
- 主题元素(element)制定了能控制的非数据元素。比如说,plot.title元素控制了图像标题的外观;axis.ticks.x指的是x轴上的标签;legend.key.height则是图例符号的高度
- 每一个元素都和一个元素函数(element function)绑定,元素函数表述了元素的视觉属性。比如,element_text()设定了字体大小、颜色,还有像plot.title()等文字元素的外观
- theme()函数允许通过运行元素函数来覆盖默认的主题函数,比如说theme(plot.title = element_text(color = “red”))
- 像theme_grey()那样的完整的主题。主题把所有的主题元素的值设置得和谐共存
比如,假设对数据创建了以下图像
base <- ggplot(mpg, aes(cty, hwy, color = factor(cyl))) +geom_jitter() +geom_abline(color = "grey50", size = 2)base
它达到了想要的效果:得知了cty和hwy高度相关,它们两者都和cyl有着强联系,而且hwy总是比cty要大(此外cty增大的话两者差值也会增大)
如果想要将图像作为论文发表,需要稍微修改一下它
- 改善坐标轴和图例标签的效果
- 为图像添加标题
- 微调颜色比例
labelled <- base + labs(x = "City mileage/gallon", y = "Highway mileage/gallon", color = "Cylinders", title = "Highway and city mileage are highly correlated") + scale_color_brewer(type = "seq", palette = "Spectral")labelled
接下来,需要确保图像样式和期刊样式保持一致
- 背景是白色的,而不是浅灰色的
- 如果有空位的话,图例应该放在图像里面
- 主要的网格线应该是浅灰色的,次要的网格线应该被移除
- 图像标题应该是12磅的加粗字体
styled <- labelled +theme_bw() +theme(plot.title = element_text(face = "bold", size = 12), legend.background = element_rect(fill = "white", size = 4,color = "white"), legend.justification = c(0, 1),legend.position = c(0, 1),axis.ticks = element_line(color = "grey70", size = 0.2),panel.grid.major = element_line(color = "grey70", size = 0.2),panel.grid.minor = element_blank())
styled
最后,期刊想要600打印分辨率(dpi)的TIFF图像文件。将会在存储输出中了解到ggsave()的细节
完整的主题
ggplot2自带了很多内置主题。最重要的一个是theme_grey(),它是ggplot2的标志性主题,有着浅灰色背景和白色网格线
- theme_bw():theme_grey()的变种,使用了白色背景和细灰色网格线
- theme_linedraw():这个主题的线条只有黑色,但是线条有不同的宽度,背景是白色的,让人联想起素描的风格
- theme_light():类似theme_linedraw(),但是有着浅灰色的线条和坐标轴,让人更多地把注意力放在数据上面
- theme_dark():theme_light()的暗色风格版本,有着类似的线条大小,但是背景是灰暗色的。当想让彩色线条更加突出的时候这个主题特别有用
- theme_minimal():简约风格主题,没有背景标注
- thme_classic():经典风格主题,没有x轴和y轴线条及网格线
- theme_void():完全空白的主题
df <- data.frame(x = 1:3, y = 1:3)
base <- ggplot(df, aes(x, y)) + geom_point()
base + theme_grey() + ggtitle("theme_grey()")
base + theme_bw() + ggtitle("theme_bw()")
base + theme_linedraw() + ggtitle("theme_linedraw()")
base + theme_light() + ggtitle("theme_light()")
base + theme_dark() + ggtitle("theme_dark()")
base + theme_minmal() + ggtitle("theme_minimal()")
base + theme_classic() + ggtitle("theme_classic()")
base + theme_void() + ggtitle("theme_void()")
所有主题都有base_size参数,这个参数控制着基础字体大小。基础字体大小是所有坐标轴标题都会使用到的:图像标题通常来说回稍微大一些(1.2倍),轴须和条状区域的标签通常稍微小一点(0.8倍)。如果想分别控制这些字体大小,需要如下文所述那样分别修改单独的元素
除了在图像上套用完整的主题,还可以用theme_set()来修改默认主题的效果。如果不喜欢默认的灰色背景,可以运行theme_set(theme_bw())来把所有图像的背景都设为白色
除了ggplot2所内置的,还能使用其它的主题,比如ggthemes
library(ggthemes)
base + theme_tufte() + ggtitle("theme_tufte()")
base + theme_solarized() + ggtitle("theme_solarized()")
base + theme_excel() + ggtitle("theme_excel()")
完整的主题是一个很好的出发点,但是它们没有提供很多的控制细节,如果想修改某个元素,将会用到theme(),并且通过元素函数来覆盖某个元素的默认设置
ggplot2-主题1相关推荐
- ggThemeAssist:鼠标调整ggplot2主题,不用再记这些代码啦!
文章目录 ggThemeAssist:鼠标调整主题,并返回代码 1. 设置 Settings 2. 面板和背景 Panel & Backgroud 3. 坐标轴 Axis 4. 标题与标签 T ...
- 设置图例字体_R高级画图(0903)关于字体、溪流图、ggplot2主题等设置 (tidyTuesday)...
在使用ggplot2画图的时候如何导入字体,在使用ggplot2的时候如何处理复杂的控件.主题等,今天将一一介绍. part1 对ggplot2使用字体. 这个难点肯定就是导入字体,然后在ggplot ...
- ggplot2作图详解:主题(theme)设置
转载自:http://blog.csdn.net/u014801157/article/details/24372531 凡是和数据无关的图形设置内容理论上都可以归 主题类 但考虑到一些内容(如 坐标 ...
- 如何用ggplot2绘制漂亮的统计图形
导言 ggplot2 是由 Hadley Wickham 开发的一个功能十分强大的 R 语言绘图程序包,它能够非常轻松的画出各种好看的统计图形.关于 ggplot2 的教程有很多,Cédric Sch ...
- R语言ggplot2绘制分组箱型图和分组柱状图
需求 论文中常见的分组箱型图和分组条形图可以直观的比较方法的效果,以一个图显示多个方法在多个数据集上的AUC或AUPR. 抽象出来的数据即包含2个分类变量和1个连续变量, 不同的方法(分类变量1)在不 ...
- R语言-ggplot2图形语法
简介 在R里,主要有两大底层图层系统,一是base图形系统,二是gird图形系统.lattice包与ggplot2包正是基于gird图形系统构建的,他们都有自己独特的图形语法. ggplot2有着自己 ...
- R语言的ggplot2做数据可视化的一些推文合集(文末有福利)
小明的数据分析笔记本 1.记录一些R语言和python做数据分析和数据可视化的简单小例子:2.园艺植物相关的细胞器基因组.转录组.核基因组.群体遗传学相关的文献阅读笔记.欢迎大家关注. 长按上方二维码 ...
- ogre绘制3d图形_R语言统计与绘图:绘制饼图
饼图也是最常见的图形之一,饼图在商业世界中无所不在,然而多数统计学家,包括相应R文档的编写者却都对它持否定态度. 相对于饼图,更推荐使用条形图或点图,因为相对于面积,人们对长度的判断更精确. 今天来学 ...
- dataframe第二列 r语言_123.R简介和统计绘图
123R简介和统计绘图 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所:陈同 中国中医科学院 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://github.com/ ...
- 学会这个BBC,你的图也可以上新闻啦!
英国广播公司(British Broadcasting Corporation:BBC)是全球最大的新闻媒体,其中各类新闻稿件采用的统计图表能很好地传达信息.为了方便清洗可重复数据和绘制图表,BBC数 ...
最新文章
- hdu4911 简单树状数组
- 开源自制6通道航模遥控器,Arduino Pro Mini NRF24L01模块
- 寒假每日一题(提高组)【Week 1 完结】
- 如何结合PICgo,Typora以及阿里云对象存储OSS搭建自己图床写博客
- Android apk签名方法
- 计算机网络的拓扑结构三种基本型,2018年自考《计算机网络基本原理》试题库四...
- c语言打开pdf失败,c语言错误种类总结.pdf
- 基于用户滚动应用CSS
- idea整个项目乱码解决办法
- 分享一个百度云加速下载工具
- 算法64-荷兰国旗问题
- GIS应用技巧之空间插值理论介绍
- 大数据学习教程SD版第三篇【Hadoop HDFS】
- RFB-Net论文解读
- SQLAlchemy部分
- python新疆自驾旅游推荐系统毕业设计源码111042
- 订餐系统c语言代码大全,C语言订餐系统
- 双基因突变患者_宁夏发现世界首例双基因突变病例 患者矮小
- 初学VUE.js之数据绑定
- 调试心得plc做主站(客户端)