【发布时间】:2020-06-14 00:06:59
【问题描述】:
我有一个数据框,我想以网格方式生成多个图,并在列之间进行映射。所以它可能是每列的直方图,或者每列(x 除外)相对于 x 的散点图。
例如
ggplot(data=iris0, aes(x=Sepal.Width, y=Sepal.Length)) +
geom_point(aes(col=Species)) +
ylab("Sepal.Length") + ggtitle("Scatterplot of Sepal.Length against Sepal.Width")
但想在单个网格中自动生成 y=Sepal.Length、y=Petal.Length、y=Petal.Width 的图。 或例如
ggplot(data=iris0, aes(x=Sepal.Width, col=Species)) +
geom_histogram(aes(fill = Species)) +
ylab("Sepal.Width")
但在一个网格中自动生成四个直方图(每个属性一个)。
facet_wrap 或 facet_grid 将是完美的,因为他们为您安排得很好并且带有清晰的标签(看起来不错)。但我不确定在这种情况下如何应用它们(通过属性而不是像物种这样的因素)。
(首选 base-R + ggplot2 中的解决方案,但如有必要,请继续使用需要其他包的方法)
【问题讨论】:
-
您应该将数据“融化”或重塑为长格式。我尝试使用基础 R 中的
reshape()来执行此操作,但它总是让我的大脑融化……我可能会放弃并使用reshape2或tidyr方法来执行此操作。