【问题标题】:How to change values on y-axis for lattice xyplot如何更改晶格 xyplot 的 y 轴上的值
【发布时间】:2015-03-15 04:26:46
【问题描述】:

我在格子中有一个 xy 图,我在上面展示了四种不同的东西。剧情现在看起来是这样的。粉红色线条的值范围从 1 到 15000,而其他线条的值范围从 20 到 300。这就是为什么除了粉红色之外的所有线条看起来都是静态的。但是,它们有波动,但我觉得由于 yaxis,图表没有显示它们的属性。有没有办法可以缩短 y 轴,使图形也能更好地代表其他线?

这就是我没有将粉色线全部绘制在一起时的样子。这表明存在我想展示的波动。

【问题讨论】:

  • 轴不连续可能会产生很大的误导性,正是因为下面三个线的相对平坦度被遮挡了。
  • 我建议你制作两张图。正如您在问题中显示的那样,一个带有粉红色变量,一个没有。您可以同时显示这两个图表,只要 y 轴可见并且它们是垂直排列的。这样您就可以看到不同变量的 y 响应,而不会误导查看图表的人。

标签: r plot lattice


【解决方案1】:

如果你可以使用 base 包而不是 lattice,那就很简单了。下面的代码是从我自己的一个情节中大大简化的。您将不得不稍微摆弄它以添加另外两行。

线路说明

1,2 从数据框中绘制。 ylab 将在第 2 侧(左)比例将根据数据自动确定

3 开始第二个情节

4 从数据框中绘制,使用 axes=FALSE, xlab=NA, ylab=NA

5 为第 4 侧(右)创建轴比例将根据数据自动确定

6 为第 4 面制作 ylab

 1  plot(df[c(4,5)], type = "s", col = "blue", main = "Battery Life",
 2      xlab="minutes", ylab="percent")
 3  par(new=TRUE)
 4  plot(df[c(4,6)], type = "s", col = "red", axes = FALSE, xlab = NA, ylab = NA)
 5  axis(side = 4)
 6  mtext(side = 4, line = 3, "Slope ( minutes)")

【讨论】:

    【解决方案2】:

    您可以使用 latticeExtra 包创建具有 2 个独立 y 轴的图形。

    正如 cmets 建议的那样,我宁愿创建 2 个单独的图。这是一个更清洁的解决方案。

    作为替代方案:也许您可以为您的数据添加一个条件变量(“大小”左右),将您的数据分组为合适的块。然后您可以如下所示呈现您的数据。

    library("lattice")
    library("latticeExtra")
    
    dat1 <- data.frame(x=1:100, y1=rep(1:10,10), y2=rep(100:91,10))
    
    dat2 <- data.frame(x=1:200, y=c(rep(1:10,10), rep(100:91,10)), 
                   z=c(rep("small",100), rep("huge",100)))
    
    p1 <- xyplot(y1~x, data=dat1, type="l")
    
    p2 <- xyplot(y2~x, data=dat1, type="l")
    
    doubleYScale(p1, p2) # 2 y-axis: bad
    
    xyplot(y ~ x | z, data=dat2, type="l", scales="free") # 2 plots: good
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 2018-09-22
      • 2020-12-26
      相关资源
      最近更新 更多