条形图中的bar_geom千分隔符

时间:2018-04-27 13:16:28

标签: r separator geom-bar geom-text

我有一个包含不同规则和网页浏览量的数据框,如下例所示:

categories| pageviews
health    |  700000
recipes   |  1000000
diet      |  500000

现在我使用以下代码绘制它以获得条形图:

p <- ggplot(df, aes(reorder(pagePathLevel1, -pageviews), pageviews))
p + geom_bar(fill = "#00CC33", stat = "identity") +
  labs(x="categories", y="pageviews") +
  scale_y_continuous(labels=function(x) format(x, big.mark = ".", scientific = FALSE)) +
  geom_text(aes(label=pageviews), size=4, vjust = 1.2, color = "darkgreen")

不幸的是,scale_y_continuoius函数仅适用于轴刻度,而不适用于geom_text中的值。是否有可能在条形图中显示的值中获得千位分隔符?

1 个答案:

答案 0 :(得分:2)

在绘制绘图之前,您可以更改label美学的基础列,如下所示:

library(scales)

df <- df %>%
  mutate(label.pageviews = gsub("\\,",".", scales::comma(pageviews)))

这主要使用comma包中的scales函数来插入分隔符。由于您需要点而不是逗号,gsub部分将替换为另一个。

然后,您只需要用新生成的列替换旧的label美学,然后应该得到这样的结果:

 p + geom_bar(fill = "#00CC33", stat = "identity") +
               labs(x="categories", y="pageviews") +
               scale_y_continuous(labels=function(x) format(x, big.mark = ".", scientific = FALSE)) +
               geom_text(aes(label=label.pageviews), size=4, vjust = 1.2, color = "darkgreen")

enter image description here