geom_text不标记躲避的geom_bar

时间:2018-10-03 02:20:58

标签: r ggplot2

我似乎无法让geom_label用CLASS(使图被“躲避”的因素)来标记已躲避的条形图。相反,我得到的是每个countPROC轴)的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() 

enter image description here

此外,我不知道为什么105 geom_text标签会显示在此条形图的右侧。

1 个答案:

答案 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)

enter image description here