我似乎无法让geom_label用CLASS
(使图被“躲避”的因素)来标记已躲避的条形图。相反,我得到的是每个count
(PROC
轴)的Y
:
ggplot(data = df, mapping = aes(x = PROC)) +
geom_bar(mapping = aes(fill = CLASS), position = "dodge") +
geom_text(stat = "count", aes(x = PROC, label = ..count..)) +
theme(axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.ticks.y = element_blank(),
axis.ticks.x = element_blank(),
axis.text.x = element_blank()) +
scale_x_discrete(labels = function(x) str_wrap(
PROC.Labels,
width = 10)) +
coord_flip()
此外,我不知道为什么105 geom_text
标签会显示在此条形图的右侧。
答案 0 :(得分:4)
您需要更新geom_text
才能使用position_dodge()
功能。这是一个使用内置钻石数据集的示例,与您的示例非常相似。我还使用了 ggplot 3.0的stat()
函数,而不是不推荐使用的..count..
变量。
您的标签显示在最右边,因为它们代表每个组的总数计数,因此位于相应的较高y位置。
请注意,将position_dodge()
的宽度值设置为0.9对应于以下事实:默认情况下,分类条形图(或一组楔形的条形图)占用了轴上90%的可用空间。条形分组之间有10%的余量。
g <- ggplot(data = diamonds, aes(x = cut, fill = color)) +
geom_bar(position = 'dodge') +
geom_text(stat = 'count', hjust = 0, position = position_dodge(0.9), aes(x = cut, label = stat(count))) +
coord_flip()
print(g)