繁体   English   中英

如何对R中不同列中满足2个或以上条件的plot点进行颜色散点

[英]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_pointcolour = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM