[英]How to color scatter plot points that meet 2 or more conditions in different columns in R
这是我拥有的 dataframe 的一部分
价值1 | 值2 | 条件1 | 条件2 | 条件3 |
---|---|---|---|---|
2.3 | 0.1 | 错误的 | 错误的 | 真的 |
3.5 | 2.6 | 错误的 | 错误的 | 真的 |
3.1 | 2.5 | 真的 | 真的 | 真的 |
3.2 | 2.3 | 错误的 | 真的 | 真的 |
2.4 | 1.1 | 真的 | 真的 | 错误的 |
2.7 | 2.2 | 错误的 | 真的 | 错误的 |
2.5 | 3个 | 真的 | 错误的 | 真的 |
2.9 | 2个 | 真的 | 真的 | 真的 |
4.2 | 1个 | 错误的 | 错误的 | 真的 |
2.2 | 1.5 | 错误的 | 真的 | 真的 |
我想 plot 分散 plot 的 value1 与 value2 并为具有 2 个或更多 TRUE 条件的点着色,
你对如何做到这一点有什么建议吗(使用 ggplot2 和 tidyverse)? 谢谢你的时间和帮助
我试图用 group_by 对条件进行分组,但没有成功。
我们可以通过在条件列上使用rowSums
来获取颜色,然后使用base R
plot
的 plot
colr <- ifelse(rowSums(df1[3:5]) > 1, "red", "black")
plot(df1$value1, df1$value2, col = colr, xlab = "value1", ylab = "value2")
或者使用tidyverse
,基于逻辑列上的rowSums
创建颜色列,然后将geom_point
与colour = colr
colr 列一起使用并添加scale_colour_identity()
以使用已经存在的缩放数据
library(dplyr)
library(ggplot2)
df1 %>%
mutate(colr = case_when(rowSums(across(starts_with("condition"))) > 1
~ "red", TRUE ~ "black")) %>%
ggplot(aes(value1, value2, colour = colr)) +
geom_point() +
scale_colour_identity()
df1 <- structure(list(value1 = c(2.3, 3.5, 3.1, 3.2, 2.4, 2.7, 2.5,
2.9, 4.2, 2.2), value2 = c(0.1, 2.6, 2.5, 2.3, 1.1, 2.2, 3, 2,
1, 1.5), condition1 = c(FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE), condition2 = c(FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE), condition3 = c(TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE)),
class = "data.frame", row.names = c(NA,
-10L))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.