强制R停止绘制缩写的轴标签-例如ggplot2中的1e + 00


111

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

任何帮助,不胜感激。

Answers:


134

我认为您正在寻找:

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)

2
这工作了。谢谢。出于兴趣,带有刻度包的ggplot2中的轴还有哪些其他“标签”选项?
JPD

3
请同时访问此ggplot2.org页面,这对我解决类似问题非常有帮助。
Marta Karas 2014年


35

只是@Arun所做的更新,因为我今天尝试了它,但由于它被实现为

+ scale_x_continuous(labels = scales::comma)

2
@Arun的答案应该可以正常使用,也许您忽略了包含require(scales)?的内容。这将导入包含comma秤的包。正如您所发现的,您还可以在引用它时指定该包,而不是事先要求它。
cincodenada19年

17

作为更通用的解决方案,您可以使用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)

8

有一种解决方案不需要比例尺库。

你可以试试:

# 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))

2

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

即设置scipen()为您喜欢的数字。

例如,如果图表上的最大轴数可能为100 000,则设置scipen(200000)将确保R(和ggplot)将对所有低于200000的数字使用标准符号,并且无需在ggplot函数中添加任何行。


0

扩展原始问题以也包括分数,即1、0.1、0.01、0.001等,并避免尾随零

p + scale_x_continuous(labels = function(x) sprintf("%g", x))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.