比方说,我有一个数据框,其中包含一列x和其他变量y1,y2,...都是连续的。
在两个不同的图上绘制x〜y1和y2的最快方法是什么,就像它们在facet_wrap中一样?
我知道我可以构建多个ggplots并使用grid.arrange(但是通过这种方式,我可以为每个y重复粘贴相同的代码,而无需更改,但y的索引),但是可以通过构面来实现吗?
看起来很简单,但是我在构面方面遇到麻烦。
答案 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))