因为 y 值太小,我需要对 y 轴使用对数刻度来显示差异。在数据中,一些条目没有任何值 (0)。有没有办法在 y 轴上显示“0”?
y=c(0.1, 0.001, 0.00001, 0.0000001, 0.000000001, 0)
x=c(1, 2, 3, 4, 5, 6)
plot(x, y, log="y");
谢谢
因为 y 值太小,我需要对 y 轴使用对数刻度来显示差异。在数据中,一些条目没有任何值 (0)。有没有办法在 y 轴上显示“0”?
y=c(0.1, 0.001, 0.00001, 0.0000001, 0.000000001, 0)
x=c(1, 2, 3, 4, 5, 6)
plot(x, y, log="y");
谢谢
我发现自己在做类似的事情,但也完全不同。对于在这里偶然发现的人来说,我所做的可能会有一些用处。
我遇到的问题是我有非常大的数字,我想以对数刻度显示,但也有一些零。我使用了条形图并将 NA 用于 0。事实证明,NA 被留作空白空间,我认为在这种情况下是有道理的。我举了一个只有 10 个数字的例子,但 R 似乎可以很好地处理更多值的缩放:
values<-c(100000, 100, 2, 5, NA, NA, 2, 1, NA, 1)
barplot(values, names=1:length(values), log="y")
如果我正确理解您的问题,您想要的是 0(零),只是为了显示在 y 轴上
这个怎么样
y=c(0.1, 0.001, 0.00001, 0.0000001, 0.000000001, 0.0000000001)
x=c(1, 2, 3, 4, 5, 6)
plot(x, y, log="y",yaxt="n")
axis(2,at=c(0.1, 0.001, 0.00001, 0.0000001, 0.000000001, 0.0000000001) ,labels=c(0.1, 0.001, 0.00001, 0.0000001, 0.000000001,"0"))
在plot
yaxt="n"
禁用y轴的绘制然后我手动绘制y轴axis
并使用参数设置ticks
位置at
。然后我将我拥有的最低值(在你的情况下为 0.0000000001)设置为字符 "0"
(在label
参数处)
选择一些最小值,并用它来表示 0:
m <- min(y[y!=0])/10
plot(x, pmax(y, m), log="y")