一直在找几个小时,我尝试了所有解决方案,休息,切... 这是我的问题: 我有一个这样的数据框:
col1 col2
1 NA NA
2 NA 4.73
3 NA NA
4 NA NA
5 NA NA
6 8.72 7.64
7 2.32 NA
8 NA NA
9 8.29 6.23
10 9.36 7.72
我按照这样绘制:
scatter_plot <- ggplot(AB2, aes(col1,col2))
scatter_plot + geom_point(color=ifelse(col1>5,"#5DCA03","red")) +
labs(x = "col2", y = "col1") + geom_smooth(method="lm")
但我想要的确切是当col1或col2&lt;时,该点是红色的。五 在这里我只得到col1&lt;的红点5
谢谢你
编辑
应用 Luke Hayden 解决方案之后:
scatter_plot <- ggplot(AB2, aes(col1,col2))
scatter_plot + geom_point(color=ifelse(col1<5 | col2<5,"red","#5DCA03")) +
labs(x = "col2", y = "col1") +
geom_smooth(method="lm")
我得到这个情节rplot
虽然我不明白为什么我的红点有价值&gt; 5表示col1和col2
第二次修改:
来自 Luke Hayden 的最后一次编辑后,我修复了问题,虽然我必须将lm颜色设置为蓝色,否则我有2 lm:1表示点值&lt; 5和1表示点值> 5.现在代码看起来像这样:
scatter_plot <- ggplot(AB2, aes(col1,col2, col=valid))
scatter_plot + geom_point() +
labs(x = "col2", y = "col1") +
scale_color_manual(values=c("red","#5DCA03"))+
geom_smooth(method="lm", color="blue")
答案 0 :(得分:0)
最简单的方法是添加一个额外的列,检查列是否有条目&gt; 5。像这样:
AB <- data.frame(a= c(0, 3, 1, 6), b= c(2,7, NA, 2))
AB$isred <- apply(AB, 1, max, na.rm=T) >5
ggplot(data= AB, aes(x=a, y=b, col=isred))+
geom_point()+
scale_colour_manual(values=c("black","red"))
您也可以简单地将ifelse
更改为要求任一条件为真:
color=ifelse(col1>5 | col2>5,"#5DCA03","red")
在下面讨论之后,我理解这一点,因为你要两者都是&gt; 5。 在这种情况下,请使用:
AB <- data.frame(a= c(0, 3, 1, 6), b= c(2,7, NA, 8))
AB$isred <- AB$a > 5 & AB$b >5
ggplot(data= AB, aes(x=a, y=b, col=isred))+
geom_point()+
scale_colour_manual(values=c("black","red"))
或者简单地说:
color=ifelse(col1>5 & col2>5,"#5DCA03","red")