当前位置 : 主页 > 手机开发 > 其它 >

如何使用带注释的文本样式继承theme_set()选项

来源:互联网 收集:自由互联 发布时间:2021-06-19
如何为绘图文本元素和其他注释统一定义文本样式(大小和族)? 以下MWE library(ggplot2) data1.df - data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2", "Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 =
如何为绘图文本元素和其他注释统一定义文本样式(大小和族)?

以下MWE

library(ggplot2) 

data1.df <- data.frame(Plant = c("Plant1", "Plant1", "Plant1", "Plant2", "Plant2", 
                                 "Plant2"), Type = c(1, 2, 3, 1, 2, 3), Axis1 = c(0.2, -0.4, 0.8, -0.2, -0.7, 
                                                                                  0.1), Axis2 = c(0.5, 0.3, -0.1, -0.3, -0.1, -0.8))

theme_set(theme_bw() + theme(text=element_text(family="Palatino", size=10)))

ggplot(data1.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + geom_point(size = 5) +  annotate("text", x=0.4, y=0.0, label="Label", fontface="italic") + theme(legend.position="none")

产生

“Label”与主题element_text()定义不一致.

如果加载了ggplot2,那么这应该为您提供当前有效的属性(如果它们不同于默认值):

theme(text = element_text())$text[ c("family", "size") ]

?annotate告诉我们……“与典型的geom函数不同,geoms的属性不是从数据框的变量映射,而是作为向量来映射.”我假设这意味着annotate不会在theme()中查找其字体信息,尽管该句子没有特别涵盖.还有一个后来的评论让我觉得这可能是设计的:“……但所有其他美学都已设定.这意味着用这个功能创建的图层永远不会影响图例.”

注释中的注释:“这些注释没有缩放,所以你可以做(​​例如)color =”red“来获得红点.”我认为轴的默认值在大小上有一个特定的比例,但是没有设法找到帮助文件中的细节.这似乎为注释提供了与轴标题相似的大小:

ggplot(data1.df, aes(x = Axis1, y = Axis2, shape = Plant, color = Type)) + 
       geom_point(size = 5) +  
       annotate("text", x=0.4, y=0.0, label="Label", 
                 family= theme_get()$text[["family"]], 
                 size= theme_get()$text[["size"]]/2.5, 
                 fontface="italic") + 
       theme(legend.position="none")

如果你有兴趣追求“为什么”使用2.5问题你可以看看?rel和使用主题的例子(axis.title.x = element_text(size = rel(2.5))).

网友评论