在ggplot2中旋转条带文本
Rotate Strip Text in ggplot2
我很难弄清楚如何从 ggplot2
中轮换 theme
中的 strip.text
属性。我使用的是 R 版本 3.4.2 和 ggplot2 版本 2.2.1。
以下是 MWE 的数据。
> dput(dd)
structure(list(type = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("blossum",
"happy", "rugged", "theatre"), class = "factor"), min = c(3,
2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6), max = c(8,
3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9), avg = c(5,
1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3), y = c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L)), .Names = c("type", "min", "max", "avg", "y"), row.names = c(NA,
20L), class = "data.frame")
现在,当使用 element_text()
属性时,我可以为 strip.text
着色,但无法改变角度。我希望条带(方面)名称在左侧水平 运行。这是代码:
ggplot(dd, aes(x = y, ymin = min, ymax = max, y = avg)) +
facet_wrap(~ type, ncol = 1, strip.position = "left") +
geom_ribbon(aes(x = y, ymin = min, ymax = max),
color='black', fill='gray70') + coord_flip() +
theme(strip.background = element_blank(),
strip.text = element_text(angle=90, color='blue4'),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.y = element_blank())
然后生成此图:
然而,这不是我想要的,因为在 strip.text = element_blank(angle=90, color='blue4')
中改变角度时它们没有区别。
没关系,我用 strip.text.y = element_text(angle = 180)
弄明白了。不知道为什么单独 strip.text
不起作用。
ggplot(dd, aes(x = y, ymin = min, ymax = max, y = avg)) +
facet_wrap(~ type, ncol = 1, strip.position = "left") +
geom_ribbon(aes(x = y, ymin = min, ymax = max),
color='black', fill='gray70') + coord_flip() +
theme(strip.background = element_blank(),
strip.text.y = element_text(angle=180, color='blue4'),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.y = element_blank()
)
我很难弄清楚如何从 ggplot2
中轮换 theme
中的 strip.text
属性。我使用的是 R 版本 3.4.2 和 ggplot2 版本 2.2.1。
以下是 MWE 的数据。
> dput(dd)
structure(list(type = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L,
4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("blossum",
"happy", "rugged", "theatre"), class = "factor"), min = c(3,
2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6, 3, 2, 4, 6), max = c(8,
3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9, 8, 3, 7, 9), avg = c(5,
1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3, 5, 1, 3, 3), y = c(1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L)), .Names = c("type", "min", "max", "avg", "y"), row.names = c(NA,
20L), class = "data.frame")
现在,当使用 element_text()
属性时,我可以为 strip.text
着色,但无法改变角度。我希望条带(方面)名称在左侧水平 运行。这是代码:
ggplot(dd, aes(x = y, ymin = min, ymax = max, y = avg)) +
facet_wrap(~ type, ncol = 1, strip.position = "left") +
geom_ribbon(aes(x = y, ymin = min, ymax = max),
color='black', fill='gray70') + coord_flip() +
theme(strip.background = element_blank(),
strip.text = element_text(angle=90, color='blue4'),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.y = element_blank())
然后生成此图:
然而,这不是我想要的,因为在 strip.text = element_blank(angle=90, color='blue4')
中改变角度时它们没有区别。
没关系,我用 strip.text.y = element_text(angle = 180)
弄明白了。不知道为什么单独 strip.text
不起作用。
ggplot(dd, aes(x = y, ymin = min, ymax = max, y = avg)) +
facet_wrap(~ type, ncol = 1, strip.position = "left") +
geom_ribbon(aes(x = y, ymin = min, ymax = max),
color='black', fill='gray70') + coord_flip() +
theme(strip.background = element_blank(),
strip.text.y = element_text(angle=180, color='blue4'),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.y = element_blank()
)