我正试图解决这个问题:
我有以下data.frame:
df<-data.frame(read.csv(file="C:/Users/136728/Desktop/R/TestIRIC.csv",
header=TRUE))
我尝试用ggplot2使用子集绘制下图:
ggplot(data = df) + geom_point(aes(x = x, y = y)) + geom_point(data = subset(subset(data = df, y > 0 & y < 100), x > 250 & x < 375), aes(x = x, y = y), colour = "pink")
想法是重现下图: enter image description here
但是我得到以下错误消息:“子集中的错误(data = df,y&gt; 0&amp; y&lt; 100):找不到对象'y'”。 请注意,使用子集和相同df的下面的另一个代码完全可以正常工作:
ggplot(data = df) + geom_point(aes(x = x, y = y)) + geom_point(data = subset(df, Group == "Group1"), aes(x = x, y = y), colour = "pink")
非常感谢您的帮助!
答案 0 :(得分:1)
我认为以下代码可以满足您的需求。这里的点由布尔值着色,表示它们是否落在范围内。然后scale_color_manual
用于手动定义两个选项的颜色。一般来说,我认为最好使用颜色参数来正确地对点进行着色,而不是在第一个上面绘制第二个集合。
ggplot(data = df) + geom_point(aes(x = x, y = y, color = y > 0 & y < 100 & x > 250 & x < 375))+scale_color_manual(values = c("black", "pink"))
另一种可能更强大的方法是首先向data.frame
添加一个列,表明它是否适合数据,即:
df$in_range <- df$y>0&df$y<100&df$x>250&df$x<375
ggplot(df, aes(x = x, y = y, color = in_range)) + geom_point() + ...