找不到子集对象时出错(ggplot2中有geom_point)

时间:2017-10-26 15:54:50

标签: r object dataframe ggplot2 subset

我正试图解决这个问题:

我有以下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")

非常感谢您的帮助!

1 个答案:

答案 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() + ...