如何在R的X轴上绘制多个变量,并在Y轴上绘制其值?

时间:2020-04-05 05:08:04

标签: r ggplot2

我有这个数据框:

df = data.frame(
  ID = c("foo", "bar", "baz"),
  x  = c(0.30,  0.45,  0.06),
  y  = c(1.33,  0.46,  0.04),
  z  = c(1.47,  0.02,  0.01)
)

我想要一个在x轴上具有变量x,y和z的点图。在y轴上,我希望每个变量的值都用ID着色。例如,x,y和z列中ID为“ foo”的行的所有值都可以是蓝色; “ bar”的所有值都可以为“ red”;等等。 ggplot2或任何其他工具可以做到吗?

1 个答案:

答案 0 :(得分:2)

使用ggplot2,您需要将数据框重塑为更长的格式。您可以通过使用pivot_longer中的函数tidyr来做到这一点:

library(tidyr)


df %>% pivot_longer(-ID, names_to = "Var", values_to = "val")

# A tibble: 9 x 3
  ID    Var     val
  <fct> <chr> <dbl>
1 foo   x      0.3 
2 foo   y      1.33
3 foo   z      1.47
4 bar   x      0.45
5 bar   y      0.46
6 bar   z      0.02
7 baz   x      0.06
8 baz   y      0.04
9 baz   z      0.01

通过以下格式,您可以通过以下操作轻松地使用您的数据来获取ggplot图:

library(dplyr)
library(tidyr)
library(ggplot2)

df %>% pivot_longer(-ID, names_to = "Var", values_to = "val") %>%
  ggplot(aes(x = Var, y = val, color = ID))+
  geom_point()

enter image description here

相关问题