【发布时间】:2022-11-17 22:45:40
【问题描述】:
在 ggplot2 中,我怎样才能停止缩写轴标签 - 例如1e+00, 1e+01 沿 x 轴绘制后?理想情况下,我想强制 R 显示实际值,在本例中为 1,10。
非常感谢任何帮助。
【问题讨论】:
在 ggplot2 中,我怎样才能停止缩写轴标签 - 例如1e+00, 1e+01 沿 x 轴绘制后?理想情况下,我想强制 R 显示实际值,在本例中为 1,10。
非常感谢任何帮助。
【问题讨论】:
我想你正在寻找这个:
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())
【讨论】:
scales::comma 是scales::label_comma 等的简写。
Error: Breaks and labels are different lengths
library(scales)
你有没有尝试过类似的东西:
options(scipen=10000)
在密谋之前?
【讨论】:
只是对@Arun 所做的更新,因为我今天尝试了它但它没有用,因为它被实现为
+ scale_x_continuous(labels = scales::comma)
【讨论】:
require(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() 设置为您认为合适的数字。
例如如果图表上的轴最大值可能是 100 000,设置 scipen(200000) 将确保 R(和 ggplot)将对 200000 以下的所有数字使用标准符号,并且不需要向 ggplot 函数添加任何行。
【讨论】:
p + scale_x_continuous(labels = scales::number_format(accuracy = 1))
accuracy = 1 用于整数,如果你想要一位小数,你也可以使用accuracy = 0.1,accuracy = 0.01 用于两位小数,等等。
【讨论】:
如果您还想将逗号用作千位分隔符,则可以使用以下内容:
p + scale_x_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))
【讨论】: