2

我无法按照我想要的方式格式化我的 y 轴标签。我希望它们四舍五入到最接近的千位。

library(scales)
library(ggplot2)

df<-data.frame(x=seq(1,10,by=1),y=sample(10000000,10))
ggplot(df,aes(x=x,y=y))+geom_point()+scale_y_continuous(trans='log10', breaks=trans_breaks('log10', function(x) 10^x), labels=comma)

在此处输入图像描述

如何格式化我的 y 标签,以便它们四舍五入到最接近的千位?换句话说,我希望显示 7,943,000 而不是 7,943,282。

4

1 回答 1

2

您可以通过将labels参数更改为scale_y_continuous.Here I used round(x,-3)to round the label value to the most 1000:

library(ggplot2)
library(scales)
df<-data.frame(x=seq(1,10,by=1),y=sample(10000000,10))
p <- ggplot(df,aes(x=x,y=y))+geom_point()
p <- p +scale_y_continuous(trans='log10', 
                           breaks=trans_breaks('log10', function(x) 10^x), 
                           labels = function(x)round(x,-3)
                           )
p

产生: 在此处输入图像描述

于 2013-11-05T16:23:44.360 回答