我正在尝试调整群集条形图中每个条形的百分比频率。现在,我的图表看起来像这样:
以下是代码:
ggplot(graph_data, aes(x, Freq)) +
geom_bar(aes(fill = Pref), position = 'dodge', stat = 'identity') +
geom_text(aes(label = sprintf("%.0f%%", round(Freq/sum(Freq) * 100))),
hjust = -0.25) +
labs(list(x = attr(graph_data, 'seg_label'),
y = 'Frequency',
title = paste('Q:', attr(graph_data, 'question')))) +
scale_y_continuous(limits = c(0, 1.2 * max(graph_data$Freq))) +
guides(fill = F) +
coord_flip() +
annotate("text", x = Inf, y = Inf,
label = paste0("N = ", sum(graph_data$Freq)),
hjust = 1.5, vjust = 1.5)
我认为问题可以通过这段代码来解决,但我不确定如何:
geom_text(aes(label = sprintf("%.0f%%", round(Freq/sum(Freq) * 100))), hjust = -0.25)
非常感谢任何帮助!
编辑:以下是我的数据结构示例:
df <- data.frame(x = rep(c('1824', '2534', '3544'), 3),
Pref = rep(c('low', 'neutral', 'high')),
Freq = 1:9 * 10)
答案 0 :(得分:0)
正如评论中所提到的,我认为这是Position geom_text on dodged barplot的重复。
但我现在就做了,所以我会包含代码。
ggplot(df, aes(x, Freq, fill = Pref)) +
geom_bar(position = 'dodge', stat = 'identity') +
geom_text(aes(label = sprintf("%.0f%%", round(Freq/sum(Freq) * 100))),
position = position_dodge(width = 0.9), hjust = -0.25) +
labs(list(x = attr(df, 'seg_label'),
y = 'Frequency',
title = paste('Q:', attr(df, 'question')))) +
scale_y_continuous(limits = c(0, 1.2 * max(df$Freq))) +
guides(fill = F) +
coord_flip()
您需要将fill
放入原始aes
中,以便geom_text
知道躲避哪个标签的数量。