如何在y轴上更改晶格xyplot的值

时间:2015-03-15 04:26:47

标签: r plot lattice

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

enter image description here

当我不将粉红色的线条全部绘制在一起时,这就是它的样子。这表明我想表现出波动。

enter image description here

2 个答案:

答案 0 :(得分:0)

如果你可以使用基础包而不是格子,那很简单。下面的代码大大简化了我自己的一个图。你将不得不用它来添加两行。

线描述

来自数据框的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)")

答案 1 :(得分:0)

您可以使用latticeExtra包创建一个包含2个单独y轴的图形。

正如评论所示,我宁愿创建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