格式化ggplot2轴标签,使得只有数字> 9999有逗号

时间:2017-12-26 21:15:02

标签: r ggplot2

我试图遵守出版物样式指南,只有5位或更多位数的数字才能使用逗号。已搜索过此内容但未找到使用' labels =逗号时覆盖默认值的方法。'以下是一个例子:

 require(dplyr)
 require(ggplot2)
 require(scales)

 # create mock dataframe
 temp <- mpg %>% mutate(newvar=(hwy*300))

 ggplot(temp, aes(x=cyl, y=newvar)) + geom_point() +
 scale_y_continuous(labels=comma) +
 labs(title="When using 'labels=comma'...", 
      subtitle="How format axis labels such that commas only appear for numbers > 9999?")

使用此示例,希望最下面的y轴标签读取&#34; 4000&#34;,&#34; 6000&#34;可以手动实现这一点,但这不值得打扰,因为许多图表的尺度都包含在这个范围内。有什么建议吗?

1 个答案:

答案 0 :(得分:6)

我们可以在scale_x_continuous中使用匿名函数:

library(scales)
library(ggplot2)

# generate dummy data
x <- 9998:10004
df <- data.frame(x, y = seq_along(x))

ggplot(df, aes(x = x, y = y))+
    geom_point()+
    scale_x_continuous(labels = function(l) ifelse(l <= 9999, l, comma(l)))

enter image description here