我想彼此并排绘制一些图表(例如,在列中)并将它们写入一个png文件。在graphics::plot
中,它可以与layout(...)
一起使用,但是如何在ggplot2
中布置图表?
我在刻面方面可以做些什么吗?
示例:
require(cars)
require(data.table)
require(tidyr)
df <- as.data.table(mtcars)
df$obs <- seq_len(df[,.N])
df <- as.data.table(pivot_longer(data = df, names_to = "name", values_to = "val", cols = names(df[, !"obs"])))
df[, name := as.factor(name)]
library(ggplot2)
g <- ggplot(data = df)
g <- g + aes(x = df[, obs], y = df[, val])
g + facet_wrap(df[, name]) + geom_line()
这不是完美的。这为我提供了mtcars
所有属性的图表矩阵。但是y轴始终设置为所有属性最大值的最大值。
我希望每个属性的y轴都具有最佳范围。
另一件事是,如何在同一文件中绘制不同的表:
df1 <- as.data.table(mtcars)[, 1]
df1$obs <- seq_len(df1[,.N])
df2 <- as.data.table(mtcars)[, 2]
df2$obs <- seq_len(df2[,.N])
g1 <- ggplot(data = df1)
g1 <- g1 + aes(x = df1[, obs], y = df1[, mpg])
g1 + geom_line()
g2 <- ggplot(data = df2)
g2 <- g2 + aes(x = df2[, obs], y = df2[, cyl])
g2 + geom_line()
如何安排地块?我不希望将它们绘制在同一张图中。他们应该有自己的轴和标题。
答案 0 :(得分:1)
使用scales="free"
选项释放秤。
g + facet_wrap(df[, name], scales="free") + geom_line()
对于第二个问题,您可能需要咨询以下答案:Side-by-side plots with ggplot2