在 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
require(scales)
p + scale_x_continuous(labels = comma)
您是否尝试过类似的方法:
options(scipen=10000)
在绘图之前?
只是对@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)
有一个不需要 scales 库的解决方案。
你可以试试:
# 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 函数添加任何行。