如何在ggplot中用相同的x绘制不同的y?

时间:2019-06-30 10:47:48

标签: r ggplot2

比方说,我有一个数据框,其中包含一列x和其他变量y1,y2,...都是连续的。

在两个不同的图上绘制x〜y1和y2的最快方法是什么,就像它们在facet_wrap中一样?

我知道我可以构建多个ggplots并使用grid.arrange(但是通过这种方式,我可以为每个y重复粘贴相同的代码,而无需更改,但y的索引),但是可以通过构面来实现吗?

看起来很简单,但是我在构面方面遇到麻烦。

1 个答案:

答案 0 :(得分:0)

这种类型的问题通常与重塑数据有关。格式应为long format,并且数据应为宽格式。
我将使用内置数据集iris的前三列作为示例数据集。

library(ggplot2)

df1 <- iris[1:3]
names(df1) <- c("x", "y1", "y2")

df1_long <- reshape2::melt(df1, id.vars = "x")
head(df1_long)

ggplot(df1_long, aes(x, value, colour = variable)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  facet_grid(rows = vars(variable))

enter image description here