重叠和固定的x秤在小刻面(标度=“游离”),以便使膜(overlapping and fixing

2019-09-17 17:02发布

随着@Justin对另一篇文章的帮助下,我绘制与仿真结果facet_grid在GGPLOT2选项。 数据和答案的帖子是在这里: 使用facet_grid选项与GGPLOT2绘制数据帧的列

这里,用约SCALE_X最小值和最大值为每个参数类型附加信息原始取样数据的副本:

dat <- read.table(textConnection("P1 P2 P3 P4 R
1 2e-5 1.0 0.6 3 1
2 4e-6 1.5 0.7 1.5 2
3 6e-7 1.2 0.6 2.5 3 
4 8e-8 1.45  0.65 3.2 4
"))

scalx <- read.table(textConnection("P XMIN XMAX
1 1 10e-1 10e-10
2 2 0.5 3.0
3 3 0.0 1.5
4 4 2.0 5.0
"))

通过@justin实际例如绘制给出的代码:

library(ggplot2)
library(reshape2)
dat.melt <- melt(dat, id.vars='R')

ggplot(dat.melt, aes(x=0, y=value)) +
    geom_boxplot() +
    geom_point(aes(colour=factor(R))) +
    facet_wrap(~variable, ncol=1, scales='free') +
    coord_flip()

但现在,我的项目是做一个小电影展现的多个模拟结果演变,在这个时候给定上面我获得这样伟大的图形代码的帮助。

要做到这一点,我需要定为各方面的价值,因为每一个参数固定的极值之间的范围内,尽管这些东西值从面的变化方面。

你知道,如果有可能与facet_grid因为我发现最近这个问题关系到指定在GitHub的GGPLOT2项目库不同的方面有不同的限制: https://github.com/hadley/ggplot2/issues/187 。 是否有其他替代解决方案,以实现这一目标?

Answer 1:

既然你是想扩大天平在每个方面(而不是限制/收缩他们),这是可能的。 你需要重塑你scalx到类似的融化格式dat

xlims <- melt(scalx, id.vars="P")
xlims$P <- paste0("P", xlims$P)
names(xlims)[1] <- "variable"

除了melt ,我提出的面具有相同的格式和变量名。 然后,这个新的数据帧,可以给一个geom_blank层,这样它会影响天平的限制,但实际上并没有画任何东西:

ggplot(dat.melt, aes(x=0, y=value)) +
    geom_boxplot() +
    geom_point(aes(colour=factor(R))) +
    geom_blank(data=xlims) +
    facet_wrap(~variable, ncol=1, scales='free') +
    coord_flip()

作为一个侧面说明,你的P4被列为具有最小的2,但实际上具有1.5的数据点。 这表明,这种做法将不仅扩大了规模,而不是合同他们。



文章来源: overlapping and fixing x-scales in facet (scale=“free”) in order to make a film