ggplot2作图详解7(完):主题(theme)设置

您所在的位置:网站首页 机核网老板 ggplot2作图详解7(完):主题(theme)设置

ggplot2作图详解7(完):主题(theme)设置

2024-07-03 20:39| 来源: 网络整理| 查看: 265

让使用者在数据分析阶段能专注于数据而不是图形细节,这是数据可视化分析工具是否合格的标准之一。某些软件作出的初始图形简直惨不忍睹,不花时间修改字体、边距、底纹这些东西就恶心得没法继续分析数据。ggplot2做得还可以:即使不做任何设置,多数情况下作出的图形都还不错,不丑陋也不妖艳,不会分散用户的注意力。这得益于ggplot2的几个预设主题。

ggplot2的四个预设主题我们在前面已经预览过了,下面我们看看主题都包含了哪些东西。这很容易,把ggplot2默认主题的设置函数theme_bw()的代码拿出来看看就知道了:

library(ggplot2) theme_gray # 函数名不加括号,获得函数的代码 ## function (base_size = 12, base_family = "") ## { ## theme(line = element_line(colour = "black", size = 0.5, linetype = 1, ## lineend = "butt"), rect = element_rect(fill = "white", ## colour = "black", size = 0.5, linetype = 1), text = element_text(family = base_family, ## face = "plain", colour = "black", size = base_size, hjust = 0.5, ## vjust = 0.5, angle = 0, lineheight = 0.9), axis.text = element_text(size = rel(0.8), ## colour = "grey50"), strip.text = element_text(size = rel(0.8)), ## axis.line = element_blank(), axis.text.x = element_text(vjust = 1), ## axis.text.y = element_text(hjust = 1), axis.ticks = element_line(colour = "grey50"), ## axis.title.x = element_text(), axis.title.y = element_text(angle = 90), ## axis.ticks.length = unit(0.15, "cm"), axis.ticks.margin = unit(0.1, ## "cm"), legend.background = element_rect(colour = NA), ## legend.margin = unit(0.2, "cm"), legend.key = element_rect(fill = "grey95", ## colour = "white"), legend.key.size = unit(1.2, "lines"), ## legend.key.height = NULL, legend.key.width = NULL, legend.text = element_text(size = rel(0.8)), ## legend.text.align = NULL, legend.title = element_text(size = rel(0.8), ## face = "bold", hjust = 0), legend.title.align = NULL, ## legend.position = "right", legend.direction = NULL, legend.justification = "center", ## legend.box = NULL, panel.background = element_rect(fill = "grey90", ## colour = NA), panel.border = element_blank(), panel.grid.major = element_line(colour = "white"), ## panel.grid.minor = element_line(colour = "grey95", size = 0.25), ## panel.margin = unit(0.25, "lines"), strip.background = element_rect(fill = "grey80", ## colour = NA), strip.text.x = element_text(), strip.text.y = element_text(angle = -90), ## plot.background = element_rect(colour = "white"), plot.title = element_text(size = rel(1.2)), ## plot.margin = unit(c(1, 1, 0.5, 0.5), "lines"), complete = TRUE) ## } ##

看穿了吧,没神秘感了。它无非是一个具有两个参数的函数:base_size和base_family。其主题部分直接应用了另外一个函数:theme。它就是ggplot2的主题设置函数。这个theme函数的产生看起来非常简单:

# 函数说明,非运行代码 theme(..., complete = FALSE)

但dotdotdot(···)参数却内涵丰富,它可以设置很多内容。

参数设置内容继承自line所有线属性 rect所有矩形区域属性 text所有文本相关属性 title所有标题属性 axis.title坐标轴标题textaxis.title.xx轴属性axis.titleaxis.title.yy轴属性axis.titleaxis.text坐标轴刻度标签属性textaxis.text.x属性和继承和前面类似,不再重复 axis.text.y  axis.ticks坐标轴刻度线lineaxis.ticks.x  axis.ticks.y  axis.ticks.length刻度线长度 axis.ticks.margin刻度线和刻度标签之间的间距 axis.line坐标轴线lineaxis.line.x  axis.line.y  legend.background图例背景rectlegend.margin图例边界 legend.key图例符号 legend.key.size图例符号大小 legend.key.height图例符号高度 legend.key.width图例符号宽度 legend.text图例文字标签 legend.text.align图例文字标签对齐方式0为左齐,1为右齐legend.title图例标题textlegend.title.align图例标题对齐方式 legend.position图例位置left, right, bottom, top, 两数字向量legend.direction图例排列方向"horizontal" or "vertical"legend.justification居中方式center或两数字向量legend.box多图例的排列方式"horizontal" or "vertical"legend.box.just多图例居中方式 panel.background绘图区背景rectpanel.border绘图区边框rectpanel.margin分面绘图区之间的边距 panel.grid绘图区网格线linepanel.grid.major主网格线 panel.grid.minor次网格线 panel.grid.major.x  panel.grid.major.y  panel.grid.minor.x  panel.grid.minor.y  plot.background整个图形的背景 plot.title图形标题 plot.margin图形边距top, right, bottom, leftstrip.background分面标签背景rectstrip.text分面标签文本textstrip.text.x  strip.text.y  

所有元素都在theme函数内使用element_line,element_rect,element_text和element_blank函数设置,使用方法参考这几个函数的参数说明即可,这里不再一一举例说明。

text, line, rect和title是最顶层的元素,理论上可以做全局设定,但当前版本ggplot2还没有实现,可以根据情况做一些调整:

x


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3