首页 > 解决方案 > 绘制每一行的所有列名的值

问题描述

假设我有以下数据框

observations <- data.frame( "Individuals" = c("Individual1", "Individual2", "Individual3"),
"PresentDay1" = c("0","1","1"),
"PresentDay2" = c("O","1","1"))

我想要做的是在 y 轴上有个人,然后将“PresentDay1”和“PresentDay2”作为我的 x 轴刻度,然后,根据个人是否存在,我有一个黑色或白色的点(1 ) 或不存在 (0)。在给定的一天。

我在 ggplot 上尝试了很多东西,但似乎无法弄清楚如何做到这一点。

非常感谢!

标签: rggplot2dplyrtidyverse

解决方案


为了达到您想要的结果,使用例如将您的数据重塑为长或整齐的格式tidyr::pivor_longer

library(ggplot2)
library(tidyr)

observations <- observations %>% 
  pivot_longer(-Individuals, names_to = "name", values_to = "value")

ggplot(observations, aes(name, Individuals, color = value)) +
  geom_point() +
  scale_color_manual(values = c("0" = "white", "1" = "black"))


推荐阅读