我有一个包含不同规则和网页浏览量的数据框,如下例所示:
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中的值。是否有可能在条形图中显示的值中获得千位分隔符?
答案 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")