【发布时间】: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 = ...但现在我只需要在我的图例标签之间增加一些垂直空间(文本从一个标签垂直滑动到下一个标签。 -
我添加了一个答案来解决您问题中的每个问题。