【问题标题】:Extend an axis limit to -1 when that axis is logarithmic in R当轴在 R 中为对数时,将轴限制扩展到 -1
【发布时间】:2017-12-06 04:56:35
【问题描述】:

我正在做以下事情:

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)。

【问题讨论】:

  • 0.1 替换y[1] 并绘制。然后将其替换为 0.00010.000000001,然后再试一次 - 希望这将说明为什么您的原始目标无法实现 - 在对数刻度上 1 和 0 之间存在无限距离。

标签: r plot logarithm


【解决方案1】:

不,你的问题在数学上是不可能的,因为log(0) = -Inf。点 (0, 0) 无法显示在对数刻度图上。

对数刻度是通过对数据值进行对数转换并对轴刻度处的值求幂而产生的。例如,要以 log-10 比例绘制值 100,首先将 100 对数转换为 log10(100) = 2,然后将相应的轴刻度从 2 转换为 10^2 = 100。因此,要在对数刻度图中绘制值 0,您仍然需要计算 log10(0),即使相应的轴刻度为 10^-Inf = 0

【讨论】:

    【解决方案2】:

    如果您的目标是拥有一个非线性 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 进行操作,但我不建议在零时使用 log-scale。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多