【问题标题】:R is plotting y axis upside down. How to flip rightside up?R 将 y 轴倒置。怎么把右侧翻过来?
【发布时间】:2020-01-13 14:17:32
【问题描述】:

我继承了这个绘制简单折线图的 R 代码。但是,这样做是为了将 y 轴值向下绘制到 0 以下(将其绘制在第四象限,顶部为 0,底部为 +3600)。我想将数据绘制在右侧(第一象限),因此 y 轴数据从 0 到顶部的 +3600 就像典型的小学图一样。

我试过 ylim = rev(y) 但它返回一个错误... 我也尝试过翻转 seq() 命令,但没有运气。

list.vlevel = numeric(9) # placeholder
plot(
  rep(0, length(list.vlevel)),
  seq(1, length(list.vlevel)),
  type = "n",
  xlim = biaslim,
  axes = F,
  main = paste(list.var.bias[vv], list.score.bias[vv]),
  xlab = "",
  ylab = ""
)

abline(h = seq(1, length(list.vlevel)),
       lty = 3,
       col = 8)
axis(2,
     labels = list.vlevel,
     at = seq(length(list.vlevel), 1, -1),
     las = 1)
axis(1)
box()
legend(
  x = min(biasarray.var.runhour),
  y = length(list.vlevel),
  legend = expname,
  lty = 3,
  lwd = 3,
  col = expcol
)
for (exp in seq(length(expname), 1, -1)) {
  lines(
    biasarray.var.runhour[exp, ],
    seq(length(list.vlevel), 1, -1),
    col = expcol[exp],
    lwd = 3,
    lty = 3
  )
}
abline(v = 0, lty = 3)

绘图应在第一象限结束,y 轴值从 0 向上增加到 +###。

【问题讨论】:

  • 请通过生成随机数据并在那里重现问题或使用dput(head(list.vlevel)) 向我们提供您的数据的小样本,使这个问题可重现。您还需要删除其他无关紧要的变量(例如,list.var.biaslist.score.biasvvexpcolexpname)或者也给我们这些变量。 (这里有很多个缺失的变量,我建议你专注于提供一个没有大量dputs的清晰简单的例子。)

标签: r plot axis


【解决方案1】:

axis(2, ...) 线绘制 y 轴。您可以看到标签按照降序排列:seq(length(list.vlevel), 1, -1)seq(1, length(list.vlevel))

同样,在lines() 内部,可能您需要将seq(length(list.vlevel), 1, -1) 更改为 ``seq(1, length(list.vlevel))`

根据您提供的信息,我们可以知道的最多 - 如果没有您使用的所有常量的值,则无法运行任何 yoru 代码,例如,biasarray.var.runhourlist.var.biasvv 等.

【讨论】:

  • 谢谢,这就是问题所在。我不确定 seq 和 axis 是如何相关的。
猜你喜欢
  • 2014-08-13
  • 1970-01-01
  • 2023-03-30
  • 2020-03-20
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多