在 ggplot2中,我如何停止缩写轴标签-例如 1e+00, 1e+01沿着 x 轴绘制一次?理想情况下,我想强制 R 显示实际值,在这种情况下应该是 1,10。
1e+00, 1e+01
1,10
非常感谢你的帮助。
你有没有试过:
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只做逗号分隔的数量级。
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()设置为一个你喜欢的数字。
scipen()
例如:。如果图表上的轴最大值可能是100000,那么设置 scipen(200000)将确保 R (和 ggplot)对200000以下的所有数字使用标准符号,并且不需要向 ggplot 函数添加任何线。
scipen(200000)
p + scale_x_continuous(labels = scales::number_format(accuracy = 1))
accuracy = 1表示整数,如果你想要一个小数位,你也可以使用 accuracy = 0.1,accuracy = 0.01表示两个小数位,等等。
accuracy = 1
accuracy = 0.1
accuracy = 0.01
类似于这个答案
如果您还希望使用逗号作为千字符分隔符,可以使用以下内容:
p + scale_x_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))