Answers:
我认为您正在寻找:
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)
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))
设置R用于科学计数法的惩罚的最简单的通用解决方案不是更高吗?
即设置scipen()
为您喜欢的数字。
例如,如果图表上的最大轴数可能为100 000,则设置scipen(200000)
将确保R(和ggplot)将对所有低于200000的数字使用标准符号,并且无需在ggplot函数中添加任何行。