ggplot2-主题3

主题元素

大约有40多个不同的元素控制着图像的外观。它们大致可以分为5类:图像、坐标轴、图例、面板、分面

1. 图像元素

一些元素控制着图像的总体效果

元素制定者描述
plot.backgroundelement_rect()图像背景
plot.titleelement_text()图像标题
plot.marginmargin()图像边距

plot.background绘制图像中最底那一层的矩形。ggplot2默认设置中使用白色背景,从而确保无论图像的最终效果是怎样的它都是可用的(比如说,即使保存成png,然后把图片放到一个黑色背景幻灯片上)。当在导出图像到其它地方的时候,也许想把背景设置成透明的,这时可以用fill = NA。 类似地,如果把图像嵌入到一个已经有边距的地方,也许想减少内置的边距。不过需要注意的是,如果想画一个边框的话,还是需要保留一个微小的边距的

base + theme(plot.background = element_rect(color = "grey50", size = 2))
base + theme(plot.background = element_rect(color = "grey50", size = 2), plot.margin = margin(2, 2, 2, 2))
base + theme(plot.background = element_rect(fill = "lightblue"))

在这里插入图片描述

2. 坐标轴元素

坐标轴元素控制着坐标轴的外观

元素制定者描述
axis.lineelement_line()平行于坐标轴的线条(默认主题中这是隐藏的)
axis.textelement_text()坐标轴标签
axis.text.xelement_txt()x轴标签
axis.text.yelement_text()y轴标签
axis.titleelement_text()坐标轴标题
axis.title.xelement_text()x轴标题
axis.title.yelement_text()y轴标题
axis.tickselement_line()轴须标签
axis.ticks.lengthunit()轴须标签的长度

需要注意的是,axis.text(和axis.title)有三种形式:axis.text、axis.text.x、axis.text.y。如果想要同时修改两个坐标轴,请使用第一种形式:所有没有在axis.text.x和axis.text.y显式设置的属性,都会从axis.text中继承

df <- data.frame(x = 1:3, y = 1:3)
base <- ggplot(df, aes(x, y)) + geom_point()

# 加重轴线
base + theme(axis.line = element_line(color = "grey50", size = 1))

# x轴和y轴的样式
base + theme(axis.text = element_text(color = "blue", size = 12))

# 对于长标签来说很有用
base + theme(axis.text.x = element_text(angle = -90, vjust = 0.5))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最常见的修正是通过旋转x轴标签来避免长标签之间的重叠。负角度和设置hjust = 0, vjust = 1可以修正这个问题

df <- data.frame(x = c("label", "a long label", "an even longer label"), y = 1:3)
base <- ggplot(df, aes(x, y)) + geom_point()
base 
base + theme(axis.text.x = element_text(angle = -30, vjust = 1, hjust = 0)) + xlab(NULL) + ylab(NULL)

在这里插入图片描述

在这里插入图片描述

3. 图例元素

图例元素控制着所有图例的外观。guide_legend()或guide_colorbar()等函数也可以用来修改某元素的图例

元素制定者描述
legend.backgroundelement_rect()图例背景
legend.keyelemen_key()图例符号背景
legend.key.sizeunit()图例符号大小
legend.key.heightunit()图例符号高度
legend.key.widthunit()图例符号宽度
legend.marginunit()图例边距
legend.textelement_text()图例标签
legend.text.align0-1图例标签对齐(0 = 右,1 = 左)
legend.titleelement_text()图例名
legend.title.margin0-1图例标签对齐(0 = 右,1 = 左)

下面的例子展示了这些选项的效果

df <- data.frame(x = 1:4, y = 1:4, z = rep(c("a", "b"), each = 2))
base <- ggplot(df, aes(x, y, color = z)) + geom_point()
base + theme(legend.background = element_rect(fill = "lemonchiffon", color = "grey50", size = 1))
base + theme(legend.key = element_rect(color = "grey50"), legend.key.width = unit(0.9, "cm"), legend.key.height = unit(0.75, "cm"))
base + theme(legend.text = element_text(size = 15), legend.title = element_text(size = 15, face = "bold"))

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

此外还有四种属性可以控制图例在图像中的布局(legend.position、legend.direction、legend.justification、legend.box)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值