将 y 轴刻度标签从标准形式更改为完整数字

3

我做了一个散点图,y轴范围从0到800,000。如何使y轴刻度显示数字(“0”,“200,000”,“400,000”,“600,000”,“800,000”),而不是它们的标准形式(“0e+00”,“2e+05”,“4e+05”,“6e+05”,“8e+05”)?

4个回答

6

请参见?options中的scipen选项。以下是一个示例:

set.seed(42)
dat <- data.frame(x = runif(100, min = 0, max = 1000000),
                  y = runif(100, min = 0, max = 1000000))

layout(matrix(1:2, ncol = 2))
plot(y ~ x, data = dat)
opt <- options(scipen = 10)
plot(y ~ x, data = dat)
options(opt)
layout(1)

这会产生以下结果:

scipen_plot

其他选项包括在plot()调用中使用axes = FALSE来压制轴,然后使用axis()添加自己的轴,并使用format()提供自定义标签。如果您确实想要数字中的“,”号分隔千位数,则应采用这种方式;有关详细信息,请参阅?format


+1 -- 除非您(OP)需要在刻度标签中使用逗号,否则这是正确的方法。如果您确实需要它们,我相信您将不得不使用format()或类似的方法,就像我的答案一样。 - Josh O'Brien
是的,我不确定逗号是否有意义。 - Gavin Simpson
太好了。感谢您解释这两种方法,我觉得非常有用。 - uhohrondo

4

以下是一个示例,帮助您入门:

x <- 1:10
y <- runif(10) * 1e6

yrange <- c(0, 1e6)
ticks <- pretty(yrange)
labels <- format(ticks, big.mark=",", scientific=FALSE)

plot(y~x, yaxt="n", ylim = yrange)
axis(2, at = ticks, labels = labels, las = 1, cex.axis=0.7) 

enter image description here


1
你可以使用 dplyr 函数: scale_y_continuous(labels = scales::comma)

1

使用format和scientific=FALSE:

a<-c(100000, 200000)
format(a, scientific=FALSE)

我猜你的意思是要添加一些类似于绘制自己的轴和标签的内容?否则这就没有意义了。 - Gavin Simpson
是的,正如Josh在上面发布的那样,您需要创建自己的轴标签。这对货币也很方便。 - tcash21

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接