theme
元素axis.text
的当前文档说:
axis.text
沿轴刻度标签(element_text;从文本继承)
但似乎继承不起作用。
此代码给出了下图,轴文本为灰色。
library(ggplot2)
ggplot(data.frame(x=1:10, y=1:10), aes(x, y)) +
geom_point(color='red') +
theme(rect = element_rect(fill = 'black'),
line = element_line(color = 'white'),
text = element_text(color = 'blue'),
panel.background = element_blank())
设置axis.text
明确有效,但我希望代码段1已经产生了这个结果
ggplot(data.frame(x=1:10, y=1:10), aes(x, y)) +
geom_point(color='red') +
theme(rect = element_rect(fill = 'black'),
line = element_line(color = 'white'),
text = element_text(color = 'blue'),
# *** setting this explictly ***
axis.text = element_text(color = 'blue'),
panel.background = element_blank())
我从一个新的R会话开始,使用此sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ggplot2_2.2.0
loaded via a namespace (and not attached):
[1] labeling_0.3 colorspace_1.2-6 scales_0.4.1 assertthat_0.1 lazyeval_0.2.0
[6] plyr_1.8.4 tools_3.3.1 gtable_0.2.0 tibble_1.1 Rcpp_0.12.6
[11] grid_3.3.1 munsell_0.4.3
如何指定高级主题元素并让这些设置通过继承级联?我是否需要以某种方式清除'默认主题?
答案 0 :(得分:3)
不同之处在于,您在第一个示例中对theme()
的调用会导致"不完整" theme
对象。
考虑:
attr(theme(rect = element_rect(fill = 'black'),
line = element_line(colour = 'white'),
text = element_text(colour = 'blue'),
panel.background = element_blank()), "complete")
这应该返回FALSE
。我的理解是,当主题不完整时调用theme()
并不具有所有的继承权。像theme_grey()
这样的主题是完整的,所以继承有效。然而,我并非100%肯定,但文档中的这一行似乎暗示了它。
通过调用完整主题函数返回的对象现在是a 嵌套的主题元素及其属性列表,它们可以实现 新的主题系统,以支持属性的继承。
查看this page,特别是名为"完整且不完整的主题对象" 的部分。它讨论了与颜色相同的问题,并向您展示如何创建自己的[完整]自定义主题,其中继承有效。