使用2个y轴时,匹配X值

时间:2016-06-23 17:48:25

标签: r plot

为了提出这个问题,我知道不鼓励在一个情节上绘制2个单独的y轴,并且它可能令人困惑和误导。但是,在这种情况下我必须这样做,并且在排队时遇到一些麻烦。这个领域通常被问到,但是当x指数稍微偏离时,我还没有看到任何关于如何做到这一点的问题。部分原因可能是由于我处理POSIX&日期对象,所以如果修复它,请告诉我。

我试图绘制土壤水分数据的时间序列,并将其与降水和其他参数进行比较。我尝试过使用ggplot2,但是对于做2个y轴图表看起来并不友好。数据间隔为2分钟,但正在使用年度或更大时间尺度的流程。下面是数据集的示例。有一些重复,因为数据来自Year,Julian Day和Minute,但我将它们组合成一个POSIXlt对象用于绘图和操作。

>to.analyze[1:10,]
Rowname Year    Julian_Day  Minute  T_.C.   Rel_Humid   Precip_.mm. T_5cm   T_10cm  T_20cm  T_50cm  T_100cm Moist_5cm   Moist_10cm  Moist_20cm  Moist_50cm  Moist_100cm TOD Year.Month  cumRain
2015.137.1  2015    137 0   18.85   19.83   0   31.88   30.08   25.66   21.36   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:00:00 AM   2015.May    0
2015.137.2  2015    137 2   18.99   19.15   0   31.8    30.06   25.66   21.37   20.6    0.047   0.054   0.07    0.125   0.134   5/17/2015 12:02:00 AM   2015.May    0
2015.137.3  2015    137 4   19.12   20.3    0   31.72   30.03   25.69   21.37   20.6    0.047   0.054   0.07    0.125   0.134   5/17/2015 12:04:00 AM   2015.May    0
2015.137.4  2015    137 6   18.99   21.65   0   31.64   30.01   25.7    21.37   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:06:00 AM   2015.May    0
2015.137.5  2015    137 8   18.68   22.59   0   31.55   29.98   25.72   21.37   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:08:00 AM   2015.May    0
2015.137.6  2015    137 10  18.16   23.69   0   31.47   29.96   25.72   21.37   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:10:00 AM   2015.May    0
2015.137.7  2015    137 12  17.69   24.8    0   31.38   29.93   25.75   21.37   20.6    0.047   0.054   0.07    0.125   0.134   5/17/2015 12:12:00 AM   2015.May    0
2015.137.8  2015    137 14  18.06   23.73   0   31.3    29.9    25.75   21.37   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:14:00 AM   2015.May    0
2015.137.9  2015    137 16  18.39   22.97   0   31.2    29.88   25.77   21.37   20.6    0.046   0.054   0.07    0.125   0.134   5/17/2015 12:16:00 AM   2015.May    0
2015.137.10 2015    137 18  18.47   22.96   0   31.11   29.84   25.77   21.37   20.6    0.047   0.054   0.07    0.125   0.134   5/17/2015 12:18:00 AM   2015.May    0

编辑:在此处找到完整数据:http://dropcanvas.com/#Bl4hJG9Y4yfg5j(要大到粘贴)

Year.Month值是具有n个值的因子,其中n是所选择的唯一月/年组合的数量。我用这个来获得每月组的箱图。我想绘制一个深度土壤湿度的原始数据,然后绘制其上面的月度数据的箱线图,然后添加每月降水箱。每月降水量来自:

short.sumRain <- aggregate(Precip_.mm. ~ Year.Month, to.analyze, sum)

这个问题可以在下面的图中看到。

plot(to.analyze$TOD,to.analyze[, "Moist_10cm"], xlab = "Time",
     ylab = "Volumetric Water Content", type = "l", xaxt = "n",
     main = main, ylim = c(0, .3))
r <- as.POSIXct(range(to.analyze$TOD))
axis.POSIXct(1, at = seq(r[1],r[2], by = "months"), labels = TRUE, format = "%Y-%m", 
         las = 1, cex = 0.1)

# Add boxplot
par(new = TRUE)
boxplot(to.analyze$Moist_10cm ~ to.analyze$Year.Month, range = 0, type = "l", 
    xaxt = "n", yaxt = "n", ylim = c(0, .3), boxwex = 0.3)

# Add monthly rainfall sums
par(new = TRUE)
plot(short.sumRain$Precip_.mm., type = "o", col = "blue", xaxt = "n", yaxt = "n",
 xlab = "", ylab = "", pch = 1)
axis(4)
mtext("Precip (mm)", side = 4, line = 1.5)

产生以下情节: VWC plot

沉淀标签有点被切断(不确定为什么R会这样做,但是如果线条变得更小,它只会出现在标签的顶部),并且降水点与蜱虫不匹配点图标记。我认为这是因为第一个绘图是用POSIX x轴绘制的,而另一个不是,但是我如何才能得到那些2个阵容呢?

1 个答案:

答案 0 :(得分:1)

我认为问题的背景是POSIXct classas.numeric( as.POSIXct("2011-01-01", "GMT") )是1293840000,这是真正的坐标值。
在默认情况下,boxplot()会更改xy坐标并使用1,2,〜作为它们的x位置。参数add=T使boxplot()使用当前坐标,参数at给出位置。
当使用2个单独的y轴时,使用相同的{更安全'更安全{ {1}}。

xlim

enter image description here