强制 R 停止绘制轴线缩写标签(科学记数法)-例如1e + 00

在 ggplot2中,我如何停止缩写轴标签-例如 1e+00, 1e+01沿着 x 轴绘制一次?理想情况下,我想强制 R 显示实际值,在这种情况下应该是 1,10

非常感谢你的帮助。

148362 次浏览

你有没有试过:

options(scipen=10000)

在密谋之前?

我觉得你在找这个:

require(ggplot2)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))
# displays x-axis in scientific notation
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p


# displays as you require
library(scales)
p + scale_x_continuous(labels = label_comma())

只是@Arun 做的一个更新,因为我今天试过了,但是没有用,因为它被实现为

+ scale_x_continuous(labels = scales::comma)

作为一个更通用的解决方案,你可以使用 scales::format_format来删除科学记数法。这也给了你很多控制权,你希望你的标签如何准确地显示,而不是 scales::comma只做逗号分隔的数量级。

例如:

require(ggplot2)
require(scales)
df <- data.frame(x=seq(1, 1e9, length.out=100), y=sample(100))


# Here we define spaces as the big separator
point <- format_format(big.mark = " ", decimal.mark = ",", scientific = FALSE)


# Plot it
p  <- ggplot(data = df, aes(x=x, y=y)) + geom_line() + geom_point()
p + scale_x_continuous(labels = point)

有一个解决方案,不需要规模库。

你可以试试:

# To deactivate scientific notation on y-axis:


p + scale_y_continuous(labels = function(x) format(x, scientific = FALSE))


# To activate scientific notation on y-axis:


p + scale_y_continuous(labels = function(x) format(x, scientific = TRUE))


# To deactivate scientific notation on x-axis:


p + scale_x_continuous(labels = function(x) format(x, scientific = FALSE))


# To activate scientific notation on x-axis:


p + scale_x_continuous(labels = function(x) format(x, scientific = TRUE))

将原问题扩展为包含分数,即1、0.1、0.01、0.001等,并避免后面的零

p + scale_x_continuous(labels = function(x) sprintf("%g", x))

最简单的通用解决方案不就是设置 R 对科学记数法的惩罚更高吗?

即将 scipen()设置为一个你喜欢的数字。

例如:。如果图表上的轴最大值可能是100000,那么设置 scipen(200000)将确保 R (和 ggplot)对200000以下的所有数字使用标准符号,并且不需要向 ggplot 函数添加任何线。

p + scale_x_continuous(labels = scales::number_format(accuracy = 1))

accuracy = 1表示整数,如果你想要一个小数位,你也可以使用 accuracy = 0.1accuracy = 0.01表示两个小数位,等等。

类似于这个答案

如果您还希望使用逗号作为千字符分隔符,可以使用以下内容:

p + scale_x_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))