使用此data.frame
> df
var value percent
1 AAAA BBBB CCCCC -0.5 9
2 FFFF DDDD CCCCC 0.3 13
3 BBBB NNNN DDDDD 0.7 17
4 NNNN MMMM BBBBB -0.4 25
我想添加percent
和括号之间的符号"像这样 (9%)
"作为第二行x轴标签。
使用此脚本(遵循此answer)
my.labels <- c(
"AAAA BBBB CCCCC\n(9%)",
"FFFF DDDD CCCCC\n(13%)" ,
"BBBB NNNN DDDDD\n(17%)",
"NNNN MMMM BBBBB\n(25%)"
)
ggplot(df, aes(x = var, y = value))+
geom_bar(stat ="identity", width = 0.4)+
scale_x_discrete(labels = my.labels)
仅对4个变量执行此操作很好,但如果我有很多变量,则需要时间。我认为对于许多变量应该有一种更快/更有效的方法。任何建议将不胜感激。
答案 0 :(得分:3)
my.labels <- paste0(df$var, "\n (", df$percent, "%)")
ggplot(df, aes(x = var, y = value))+
geom_bar(stat ="identity", width = 0.4)+
scale_x_discrete(labels = my.labels)
编辑:
如果facet-wrap
与scales="free_x"
同时实施,则以上内容无效:
p <- ggplot(df, aes(x = var, y = value)) +
geom_bar(stat ="identity", width = 0.4)
p +
facet_wrap(~var, scales="free_x") +
scale_x_discrete(labels = my.labels)
要允许标签正确显示,请先将自定义标签添加回data.frame
df$lab <- my.labels
然后使用facet_wrap
变量作为scale_x_discrete
函数的中断值:
p +
facet_wrap(~var, scales="free_x") +
scale_x_discrete(labels = df$lab, breaks=df$var)