当该轴在 R 中为对数时,将轴限制扩展到 -1
Extend an axis limit to -1 when that axis is logarithmic in R
我正在做以下事情:
x = c(0, 1, 2, 3, 4, 5)
y = x ^ 2
plot(x, y, log="y")
我想要的是图表还显示了 (x, y)=(0, 0) 处的散点。
我知道 log(0) = -Inf
。当我做 log(x)
时就是这种情况,但在这里我不做 log(x)
。相反,我只是将 y 轴的比例更改为对数。因此,我需要知道是否有一些方法可以让我也显示散点 (x, y) = (0, 0)。
不,你问的在数学上是不可能的,因为log(0) = -Inf
。点 (0, 0) 无法显示在对数尺度图上。
对数刻度是通过对数据值进行对数转换并对轴刻度处的值求幂产生的。例如,要以 log-10 比例绘制值 100,首先将 100 对数变换为 log10(100) = 2
,然后将相应的轴刻度从 2 变换为 10^2 = 100
。因此,要在对数标度图中绘制值 0,您仍然需要计算 log10(0)
,即使对应的轴刻度为 10^-Inf = 0
.
如果您的目标是拥有非线性 y 轴,而不一定是对数刻度,那么您可以按照下面的内容进行操作。
# transfrom y-values
ny <- sqrt(y)
# plot the transformed values
plot(x, ny, yaxt='n', ylab = "y")
# label the y-axis
axis(side = 2, at = ny, labels = y)
此外,如果您知道要用什么替换 log(0),那么您可以通过 ny
执行此操作,但我不建议在零时使用对数刻度。
我正在做以下事情:
x = c(0, 1, 2, 3, 4, 5)
y = x ^ 2
plot(x, y, log="y")
我想要的是图表还显示了 (x, y)=(0, 0) 处的散点。
我知道 log(0) = -Inf
。当我做 log(x)
时就是这种情况,但在这里我不做 log(x)
。相反,我只是将 y 轴的比例更改为对数。因此,我需要知道是否有一些方法可以让我也显示散点 (x, y) = (0, 0)。
不,你问的在数学上是不可能的,因为log(0) = -Inf
。点 (0, 0) 无法显示在对数尺度图上。
对数刻度是通过对数据值进行对数转换并对轴刻度处的值求幂产生的。例如,要以 log-10 比例绘制值 100,首先将 100 对数变换为 log10(100) = 2
,然后将相应的轴刻度从 2 变换为 10^2 = 100
。因此,要在对数标度图中绘制值 0,您仍然需要计算 log10(0)
,即使对应的轴刻度为 10^-Inf = 0
.
如果您的目标是拥有非线性 y 轴,而不一定是对数刻度,那么您可以按照下面的内容进行操作。
# transfrom y-values
ny <- sqrt(y)
# plot the transformed values
plot(x, ny, yaxt='n', ylab = "y")
# label the y-axis
axis(side = 2, at = ny, labels = y)
此外,如果您知道要用什么替换 log(0),那么您可以通过 ny
执行此操作,但我不建议在零时使用对数刻度。