我有这个数据框:
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或任何其他工具可以做到吗?
答案 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()