我有包含每日降水和排放数据的数据集。现在我想在一个图中绘制所有内容。所有数据集的长度为 61,因此它们可以共享相同的 x 轴。放电数据应以“正常”方式绘制,这意味着 y 轴从底部开始并位于左侧。降水数据应该“从顶部”绘制,这意味着 y 轴被反转并放置在右侧。
这是一个最小可重现示例的一些代码:
precipitation <- runif(61, min=0, max=25)
discharge <- runif(61, min=370, max=2610)
结果应该大致如下:
有人知道如何实现这一目标吗?
编辑:感谢 pascal 的回答,暗示了 ggplot2 的使用。
我还自己找到了一种使用 Base R 来实现的方法,以防将来它可以帮助任何人:
precipitation <- runif(61, min=0, max=25)
discharge <- runif(61, min=370, max=2610)
# plot with Base R
par(mar = c(5, 5, 3, 5), xpd = TRUE)
plot(precipitation, type= "l", ylim= c(0,80), ylab= "Precipitation [mm/day]", main= "Comparison",
xlab= "Day", col= "blue")
par(new = TRUE)
plot(discharge, type= "l", xaxt = "n", ylim= rev(c(0,5000)), yaxt = "n", ylab = "", xlab = "", col= "red", lty= 2)
axis(side = 4)
mtext("Discharge [m³/s]", side = 4, line = 3)
ggplot2 方式当然看起来更漂亮。
答案 0 :(得分:1)
ggplot2 可用于绘制带有第二个倒轴的图。必须在 sec.axis
中指定 scale_y_continuous()
。我正在为您的数据使用转换 ((100-x)*100) 并将其应用于轴,以便它适合。这可以更改为任何数字。
ggplot() +
geom_line(aes(y=precipitation, x=1:61), col="orange") +
geom_line(aes(y=100-discharge/100, x=1:61), col="blue") +
scale_y_continuous(name="rain", sec.axis=sec_axis(~(100-.)*100, name= "discharge"))