R bar_geom 以柱为单位的千位分隔符

R bar_geom thousand separator in bars

我有一个数据框,其中包含不同的评分标准和综合浏览量,如下例所示:

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中的值。是否也可以在条形图中显示的值中获得千位分隔符?

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

library(scales)

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

这基本上使用 scales 包中的 comma 函数来插入分隔符。由于您需要点而不是逗号,因此 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")