在 R 中使用 polygon() 对线下区域进行着色
Shading the area under a line with polygon() in R
我正在尝试使用 polygon() 填充线下的区域,但该区域却填充在上方。
我一直在寻找过去的类似问题,但他们要么使用 predict 或 dnorm 等解决方案,但似乎不适合我的情况。
这是我的代码:
# Playfair's chart
library("HistData")
data(Arbuthnot)
data("Wheat")
data("Wheat.monarchs")
with(Wheat, {
plot(x = Year, y = Wheat, type = "s",
ylim = c(0, 105), ylab = "Price of the Quarter of Wheat",
panel.first = grid(col=gray(.9), lty = 1))
lines(Year, Wages, col = "red", lwd = 2)
})
polygon(c(min(Wheat$Year), Wheat$Year, max(Wheat$Year)),
c(0, Wheat$Wages, 0),
col = "gray")
这是 result。
可能是一个菜鸟问题,但仍然不知道该怎么做。
我知道我可以尝试使用 ggplot2,但我想先尝试使用标准图形。
看来你快明白了。 Wages(过去 3 年)中存在缺失值。如果您在绘制多边形之前删除这些,您的代码就可以工作。
with(Wheat[!is.na(Wheat$Wages),],
polygon(c(min(Year), Year, max(Year)), c(0, Wages, 0),col = "gray"))
我正在尝试使用 polygon() 填充线下的区域,但该区域却填充在上方。
我一直在寻找过去的类似问题,但他们要么使用 predict 或 dnorm 等解决方案,但似乎不适合我的情况。
这是我的代码:
# Playfair's chart
library("HistData")
data(Arbuthnot)
data("Wheat")
data("Wheat.monarchs")
with(Wheat, {
plot(x = Year, y = Wheat, type = "s",
ylim = c(0, 105), ylab = "Price of the Quarter of Wheat",
panel.first = grid(col=gray(.9), lty = 1))
lines(Year, Wages, col = "red", lwd = 2)
})
polygon(c(min(Wheat$Year), Wheat$Year, max(Wheat$Year)),
c(0, Wheat$Wages, 0),
col = "gray")
这是 result。
可能是一个菜鸟问题,但仍然不知道该怎么做。 我知道我可以尝试使用 ggplot2,但我想先尝试使用标准图形。
看来你快明白了。 Wages(过去 3 年)中存在缺失值。如果您在绘制多边形之前删除这些,您的代码就可以工作。
with(Wheat[!is.na(Wheat$Wages),],
polygon(c(min(Year), Year, max(Year)), c(0, Wages, 0),col = "gray"))