躲避栏上的geom_text上的position_dodge

时间:2018-11-09 14:56:58

标签: r ggplot2 dplyr

我的DF看起来像这样:

      Date          H2 Value
2018-06-04      H2_Avg  0.08
2018-06-07      H2_Avg  0.11
2018-06-16      H2_Avg  0.12
2018-06-20      H2_Avg  0.13
2018-06-23      H2_Avg  0.24
2018-06-26      H2_Avg  0.16
2018-06-30      H2_Avg  0.24
2018-07-04      H2_Avg  0.38
2018-07-09      H2_Avg  0.44
2018-07-12      H2_Avg  0.34
2018-06-04 H2_disabled  0.07
2018-06-07 H2_disabled  0.09
2018-06-16 H2_disabled  0.10
2018-06-20 H2_disabled  0.14
2018-06-23 H2_disabled  0.23
2018-06-26 H2_disabled  0.18
2018-06-30 H2_disabled  0.22
2018-07-04 H2_disabled  0.33
2018-07-09 H2_disabled  0.27
2018-07-12 H2_disabled  0.24

我想用列中写入的值绘制一个躲避的条形图。 我要绘制的代码如下:

DF %>% ggplot() +
  geom_col(aes(Date, Value, fill = H2), position = "dodge") +
  geom_text(aes(Date, Value, label = Value), 
            position = position_dodge(width = 1), 
            vjust = 1.5)

这将输出以下内容:enter image description here 如您所见,在两列之间的差异较小的情况下,geom_text指定的值不清晰。 有办法改善吗? 翻转坐标,然后使用此处建议的position_dodge参数:Position geom_text on dodged barplot对我的数据不起作用,因为两组之间的差异很小。

2 个答案:

答案 0 :(得分:1)

尝试:

DF %>% ggplot(aes(Date, Value, fill = H2)) +
  geom_col(position = "dodge") +
  geom_text(aes(label = Value), 
            position = position_dodge(width=1),
            vjust=1.5)

请注意,我通过在aes()中包含ggplot()来简化了代码。

enter image description here

答案 1 :(得分:0)

我终于找到了问题的原因。它与“日期”列的格式有关。我将其格式化为POSIXct日期格式。由于某种原因,这与我最初的问题中所述的position_dodge格式混淆。将日期重新格式化为普通字符解决了该问题,并给了我与@ alex_555解决方案相同的图。