使用 facet_wrap 的多个直方图
Multiple histogram plots using facet_wrap
我有一个看起来像这样的数据框
x <- data.frame("raw_A" = runif(20, 2, 10), "raw_B" = runif(20, 2, 10), "mod_A" = runif(20, 2, 10), "mod_B" = runif(20, 2, 10), "modmod_A" = runif(20, 2, 10), "modmod_B" = runif(20, 2, 10), "raw_C"
= runif(20, 2, 10), "raw_D" = runif(20, 2, 10), "mod_C" = runif(20, 2, 10), "mod_D" = runif(20, 2, 10), "modmod_C" = runif(20, 2, 10), "modmod_D" = runif(20, 2, 10), "raw_E" = runif(20, 2, 10), "raw_F" = runif(20, 2, 10), "mod_E" = runif(20, 2, 10), "mod_F" = runif(20, 2, 10), "modmod_E" = runif(20, 2, 10), "modmod_F" = runif(20, 2, 10))
我想做的是使用 ggplot 绘制一系列直方图
geom_histogram(position = "identity", alpha = 0.8, bins = 100)
(A 对 B,C 对 D,E 对 F)。
使用 facet_wrap
我想在第一列 A vs B,在第二列 C vs D,在第三列 E vs F。
同时第一行我要raw_
,第二行mod_
和最后一行modmod_
比如
raw_A vs raw_B | raw_C vs raw_D | raw_E vs raw_F
mod_A vs mod_B | mod_C vs mod_D | mod_E vs mod_F
modmod_A vs modmod_B | modmod_C vs modmod_D | modmod_E vs modmod_F
我该怎么做?
因为您只需要特定的变量组合,所以最好有选择地进行。一种选择是根据需要生成数据集:
df <- rbind(data.frame(x=x$raw_A, y=x$raw_B, comb='raw_A vs raw_B'),
data.frame(x=x$raw_C, y=x$raw_D, comb='raw_C vs raw_D'),
data.frame(x=x$raw_E, y=x$raw_F, comb='raw_E vs raw_F'),
data.frame(x=x$mod_A, y=x$mod_B, comb='mod_A vs mod_B'),
data.frame(x=x$mod_C, y=x$mod_D, comb='mod_C vs mod_D'),
data.frame(x=x$mod_E, y=x$mod_F, comb='mod_E vs mod_F'),
data.frame(x=x$modmod_A, y=x$modmod_B, comb='modmod_A vs modmod_B'),
data.frame(x=x$modmod_C, y=x$modmod_D, comb='modmod_C vs modmod_D'),
data.frame(x=x$modmod_E, y=x$modmod_F, comb='modmod_E vs modmod_F')
)
然后使用使用所需组合
创建的方面变量comb
进行绘图
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb)
您的示例中生成的值分布严格在 2-10
范围内,使用 runif(20, 2, 10)
随机生成。但是,在其他情况下,如果变量的分布不严格,可以使用scales
选项。
假设您已经为以下具有不同范围的变量生成了数据,其余的与原始数据集中的数据相同。
"modmod_A" = runif(20, 2, 6), "modmod_B" = runif(20, 2, 6),
"modmod_C" = runif(20, 2, 6), "modmod_D" = runif(20, 2, 6),
"modmod_E" = runif(20, 2, 6), "modmod_F" = runif(20, 2, 6)
您可以在下面的两个图中看到差异。
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb)
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb, scales="free")
我有一个看起来像这样的数据框
x <- data.frame("raw_A" = runif(20, 2, 10), "raw_B" = runif(20, 2, 10), "mod_A" = runif(20, 2, 10), "mod_B" = runif(20, 2, 10), "modmod_A" = runif(20, 2, 10), "modmod_B" = runif(20, 2, 10), "raw_C"
= runif(20, 2, 10), "raw_D" = runif(20, 2, 10), "mod_C" = runif(20, 2, 10), "mod_D" = runif(20, 2, 10), "modmod_C" = runif(20, 2, 10), "modmod_D" = runif(20, 2, 10), "raw_E" = runif(20, 2, 10), "raw_F" = runif(20, 2, 10), "mod_E" = runif(20, 2, 10), "mod_F" = runif(20, 2, 10), "modmod_E" = runif(20, 2, 10), "modmod_F" = runif(20, 2, 10))
我想做的是使用 ggplot 绘制一系列直方图
geom_histogram(position = "identity", alpha = 0.8, bins = 100)
(A 对 B,C 对 D,E 对 F)。
使用 facet_wrap
我想在第一列 A vs B,在第二列 C vs D,在第三列 E vs F。
同时第一行我要raw_
,第二行mod_
和最后一行modmod_
比如
raw_A vs raw_B | raw_C vs raw_D | raw_E vs raw_F
mod_A vs mod_B | mod_C vs mod_D | mod_E vs mod_F
modmod_A vs modmod_B | modmod_C vs modmod_D | modmod_E vs modmod_F
我该怎么做?
因为您只需要特定的变量组合,所以最好有选择地进行。一种选择是根据需要生成数据集:
df <- rbind(data.frame(x=x$raw_A, y=x$raw_B, comb='raw_A vs raw_B'),
data.frame(x=x$raw_C, y=x$raw_D, comb='raw_C vs raw_D'),
data.frame(x=x$raw_E, y=x$raw_F, comb='raw_E vs raw_F'),
data.frame(x=x$mod_A, y=x$mod_B, comb='mod_A vs mod_B'),
data.frame(x=x$mod_C, y=x$mod_D, comb='mod_C vs mod_D'),
data.frame(x=x$mod_E, y=x$mod_F, comb='mod_E vs mod_F'),
data.frame(x=x$modmod_A, y=x$modmod_B, comb='modmod_A vs modmod_B'),
data.frame(x=x$modmod_C, y=x$modmod_D, comb='modmod_C vs modmod_D'),
data.frame(x=x$modmod_E, y=x$modmod_F, comb='modmod_E vs modmod_F')
)
然后使用使用所需组合
创建的方面变量comb
进行绘图
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb)
您的示例中生成的值分布严格在 2-10
范围内,使用 runif(20, 2, 10)
随机生成。但是,在其他情况下,如果变量的分布不严格,可以使用scales
选项。
假设您已经为以下具有不同范围的变量生成了数据,其余的与原始数据集中的数据相同。
"modmod_A" = runif(20, 2, 6), "modmod_B" = runif(20, 2, 6),
"modmod_C" = runif(20, 2, 6), "modmod_D" = runif(20, 2, 6),
"modmod_E" = runif(20, 2, 6), "modmod_F" = runif(20, 2, 6)
您可以在下面的两个图中看到差异。
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb)
ggplot(df, aes(x, y)) + geom_point() + facet_wrap(~comb, scales="free")