【问题标题】:Multiple Lines for Text per Legend Label in ggplot2ggplot2中每个图例标签的文本多行
【发布时间】:2018-04-14 05:22:01
【问题描述】:

我正在尝试为条形图中的图例处理非常长的标签(请参见包含的图片和我用来生成它的代码。我需要将它们分解为多行(2 行或 3 行) ),否则整个画面会很宽。一些帮助会很有帮助。实际上我也怀疑我的代码没有应有的简洁,但至少它可以工作(但可以随意更改)

glimpse(df)

Observations: 301
Variables: 3
$ V12n     <int> 1, 4, 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1...
$ V12      <fctr> De verwijzer neemt contact op om na te gaa...
$ METING.f <fctr> Meting 0, Meting 0, Meting 0, Meting 0, Me...

p = ggplot(df, aes(x = V12n, fill = V12)) + 
 geom_bar(aes(y = (..count..)/tapply(..count..,..PANEL..,sum)
 [..PANEL..])) + 
 scale_y_continuous(labels = scales::percent) + 
 geom_text(aes(y = ((..count..)/sum(..count..)), 
               label = scales::percent((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..])), 
               stat = "count", vjust = -0.25) +
 facet_grid(.~ METING.f) +
 labs(title = " ",
   x = "Vraag 12",
   y = "Percentage")  +
 theme(axis.text.x = element_blank(),
       axis.ticks.x=element_blank()) +
 scale_fill_manual(values = c("greenyellow", "green4", "darkorange1", "red"), 
                name = "Zijn er afspraken gemaakt over het overdragen van de verantwoordelijkheid naar de volgende zorgverlener?\n") 

 p

【问题讨论】:

  • 首先,使用library(stringr) 加载stinrgr 包。然后,在 ggplot coce 中,执行fill=str_wrap(V12, width=20)(根据需要调整宽度)。在scale_fill_manual 中,您还可以在name 上使用str_wrap,或者您可以将\n 放在字符串中任何需要换行的位置。
  • 哇,它有效,你的第一个 fill = ... 但现在我只需要在我的图例标签之间增加一些垂直空间(文本从一个标签垂直滑动到下一个标签。
  • 我添加了一个答案来解决您问题中的每个问题。

标签: r ggplot2 legend


【解决方案1】:

您可以使用str_wrap 自动换行长字符串,也可以通过将\n(换行符)添加到字符串来硬编码中断。要在图例键之间添加空格,您可以使用 legend.key.height 主题元素。下面是一个带有内置 iris 数据框的示例:

library(stringr)
library(tidyverse)

# Create long labels to be wrapped
iris$Species = paste(iris$Species, 
                     "random text to make the labels much much longer than the original labels")

ggplot(iris, aes(Sepal.Length, Sepal.Width, colour=str_wrap(Species,20))) +
  geom_point() +
  labs(colour="Long title shortened\nwith wrapping") +
  theme(legend.key.height=unit(2, "cm"))

【讨论】:

  • 由于您的回答,我的条形图几乎看起来很完美,我只想更改图例键的顺序,使其显示相同的条形顺序,最后一点有什么想法吗?
  • 好极了。正是我正在寻求的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多