在R中以对数刻度y轴绘制0

时间:2013-01-13 23:11:17

标签: r

因为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");

由于

3 个答案:

答案 0 :(得分:2)

我发现自己做了类似的事情,尽管也完全不同。对于那些在这里跌跌撞撞的人来说,我所做的事情也许会有所帮助。

我遇到的问题是,我想要以对数刻度显示非常大的数字,但也有一些零。我去了一个barplot并使用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")

illustrative image

答案 1 :(得分:1)

如果我理解你的问题,你想要的是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"))

enter image description here

plot yaxt="n"中的

禁用了y轴的绘制 然后我用axis手动绘制y轴,并使用ticks参数设置at位置。然后我将我的最低值(在您的情况下为0.0000000001)设置为字符 "0"(在label参数处)

答案 2 :(得分:0)

选择一些最小值,并使用它来表示0:

m <- min(y[y!=0])/10
plot(x, pmax(y, m), log="y")

enter image description here