因为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");
由于
答案 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")
答案 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"))
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")