我正在绘制散点图 plot(x, y)
并希望它具有对数值,所以我这样做:plot(log(x), log(y))
。我想处理以下情况:x
中的某些值为 0,因此不在图上,而相应的 y
值为非零。
我想显示带有对数刻度但自然数值的散点图,这意味着如果在 log2
中则刻度应该是 2^0, 2^1, 2^2, ...
这样我就可以在刻度上绘制 0 值,以免错过这些点。
这是一个例子:
> x = c(0, 1, 20, 100, 200, 500)
> y = c(1, 16, 32, 105, 300, 50)
> plot(x, y)
有六点。如果我使用:
> plot(log2(x), log2(y))
只有 5 个绘制,因为 x[0]、y[0] 被省略(x 值为 0)。因此,我想绘制对数值,但刻度标签是简单标记在对数刻度上的自然数。然后你可以很容易地在同一个轴上有 0、2^0(当然是 1)、2^1、2^2 等等。然后点 (x[0], y[0]) 将仍被绘制,同时保持对数刻度。
旁注:我认为通过示例对询问非常合理的问题的帖子投反对票是不公平的。这显然切合主题且相关,几乎所有在对数值上绘制事物并关心边界/边缘情况的人都会想到。
(我知道有些人通过向所有点添加任意小常量来处理这个问题,但我想避免这样做,因为它很困惑。)谢谢
最佳答案
据我了解,您想以对数刻度绘制 x 与 y 的关系图?
此处和使用 lattice
和 latticeExtra
的示例
# Some reproducible data
tm <- data.frame(x=seq(0,10,1),y=seq(0,10,1))
library(lattice)
library(latticeExtra)
xyplot(x ~ y , data=tm,
scales= list(x=list(log=2),
y=list(log=2)),
xscale.components = xscale.components.logpower, ## to get pretty scales
yscale.components = yscale.components.logpower
)
关于r - 处理 R 中的零日志值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14720161/