我在SO上进行了广泛搜索,但找不到回复。
我想使用R中的基本图形创建X和Y的散点图。 然后,我想要覆盖一行X和Z.我还希望图表用第四个变量着色。
这是我写的代码:
par(mfrow=c(2, 1))
par(mar=c(1, 1, 1, 1))
plot(bind23$datetime, bind23$log, type= "n")
points(bind23$datetime[bind23$HourlyPrecipIn ==0], bind23$log[bind23$HourlyPrecipIn ==0], col= "blue", pch=1)
points(bind23$datetime[bind23$HourlyPrecipIn > 0], bind23$log[bind23$HourlyPrecipIn > 0], col= "red", pch=1)
lines(bind23$dailyrainin, type='l', col="black")
legend("topleft", c("Below mean", "Above Mean"), col= c("blue", "red"), pch=c(1, 1))
情节与彩色点一起工作,但重叠的线不起作用。任何人都可以提供任何建议......我猜我的线路命令是不够的。谢谢!
答案 0 :(得分:1)
如果没有可重复的示例,我无法确定这是否有效,但是从您的代码和您的评论来看,我认为它会。正如我们在评论中指出的那样,您对lines()
的调用问题是缺少第二个变量。如果你只给它一个变量,它将假设是一个x值,而不是y值。此外,您可以使用points()
将调用缩小到ifelse()
,以使颜色以另一个变量的值为条件。
par(mai = c(1,1,1,1))
with(bind23, plot(datetime, log, type= "n")
with(bind23, points(datetime, log, col = ifelse(HourlyPrecipIn==0, "blue", "red"), pch = 1))
with(bind23, lines(datetime, dailyrainin, col="black"))
legend("topleft", c("Below mean", "Above Mean"), col= c("blue", "red"), pch=c(1, 1))
我在开始时就离开了par(mfrow=c(2,1))
行,因为你在这里只创建了一个图。也许还有另一个来吗?