ggplot2:为什么 stript.text.y 不从 strip.text 继承 'angle' 完成主题?

ggplot2: Why stript.text.y not inheriting 'angle' from strip.text when complete theme?

我想为垂直轴设置刻面标签的角度,我注意到我必须在主题中专门使用 set strip.text.y 因为如果我将角度设置为水平,它似乎不会继承它的 parent、strip.text,即使 complete=TRUE.

这是为什么? (也许我没有意识到使用了不完整的主题?)使用 ggplot2 v3.3.3.

以下尝试设置 angle=45 不会更改默认角度渲染。

(p <- ggplot(iris, aes(x=Petal.Length)) + geom_histogram() + facet_grid(rows = vars(Species)))

p + theme(strip.text   = element_text(angle=45))
p + theme(strip.text   = element_text(angle=45), complete=TRUE) #Results in heavier font.


为什么 complete=TRUE 没有触发继承?

必须具体:

p + theme(strip.text.y = element_text(angle=45)) # Works!

我阅读了下面小插图中标题为“完整与不完整(主题)”的部分,但在这个问题上并不清楚。
https://cran.r-project.org/web/packages/ggplot2/vignettes/extending-ggplot2.html

主题元素有层次结构:

  • strip.text 继承自 text
  • strip.text.y 继承自 strip.text
  • strip.text.y.left(和右)继承自strip.text.y
主题案例中的

'Inheritance' 表示当子项中缺少此 属性 时,子项的属性将由父项的属性填充。

如果您使用默认主题评估 theme_get()$strip.text.y,您会看到 angle-90:不丢失。因此,无论何时您在父 strip.text 中设置某些内容,strip.text.y 的角度都会推翻父角度。我认为 Kara Woo 在 this talk.

中讨论了这种行为

作为旁注,我不认为您曾经需要指定complete用于正常绘图目的。它可能只是为包或其他东西构建新主题的有用参数。