我有一个对数刻度的X轴,我想显示不带科学记数法的标签(* 即 * 不是1e3
,而是1,000
)。我一直使用label = scales::comma
执行此操作,但现在我的数据集也具有非常小的值(例如,0.001
)。因此,当我加上+ scale_x_log10(label = comma)
时,我得到一个x轴,其中1e-3
看起来像0.001
(应该是这样),但是1e3
看起来像1,000.000
。我想去掉三个小数位,这样我就得到了1,000
,而不是1,000.000
。使用label = comma_format(accuracy = 1)
,正如所建议的,here将使0.001
之类的值看起来就像0
,因此它不是一个有效的选项。
有人知道吗?这里有一个可重复的问题的例子:
library(ggplot2)
X <- 10^seq(-3, 3, length.out = 50)
Y <- 100 * X/(X + 1)
Demo_data <- data.frame(X, Y)
ggplot(Demo_data, aes(x = X, y = Y)) + geom_line(size = 1.5) +
scale_x_log10(breaks = c(1e-3, 1e-2, 1e-1, 1, 10, 1e2, 1e3),
label = scales::comma)
此解决方案不起作用:
ggplot(Demo_data, aes(x = X, y = Y)) + geom_line(size = 1.5) +
scale_x_log10(breaks = c(1e-3, 1e-2, 1e-1, 1, 10, 1e2, 1e3),
label = scales::comma_format(accuracy = 1))
1条答案
按热度按时间9udxz4iz1#
一种选择是使用
ifelse
来有条件地将accuracy
设置为值〉1和〈1: