我正在尝试使用
geom_raster()
比较三个图。问题在于,我希望在所有三个图中都保持与第一个图[-3,3]相同的比例。
以下是我的代码:
#raster plots
box <- .05
df <- expand.grid(x1 = seq(-1, 1, box), x2 = seq(-1, 1, box))
df$risk <- df$x1 + 2*df$x2
p1 <- ggplot(df, aes(x1, x2, fill = risk)) + geom_raster() +
scale_fill_gradientn(colours=c("#FFFFFF","#046380","#000000")) +
theme_minimal() +
ggtitle("True Risk")
df <- expand.grid(x1 = seq(-1, 1, box), x2 = seq(-1, 1, box))
df$risk <- .99*df$x1 + 1.98*df$x2
p2 <- ggplot(df, aes(x1, x2, fill = risk)) + geom_raster() +
scale_fill_gradientn(colours=c("#FFFFFF","#046380","#000000")) +
theme_minimal() +
ggtitle("Estimated Risk")
df <- expand.grid(x1 = seq(-1, 1, box), x2 = seq(-1, 1, box))
df$risk <- .01*df$x1 + .02*df$x2
p3 <- ggplot(df, aes(x1, x2, fill = risk)) + geom_raster() +
scale_fill_gradientn(colours=c("#FFFFFF","#046380","#000000")) +
theme_minimal() +
ggtitle("Difference")
library(gridExtra)
grid.arrange(p1, p2, p3, ncol=1)
这是我的输出
由于比例尺变为[0.03,-0.03],很难看出差异很小。我该如何展示正确的表面,但在原始比例尺上呢?
expand.grid
来创建额外的行:`grps <- c('True Risk', 'Estimated Risk', 'Difference');df <- expand.grid(x1 = seq(-1, 1, box), x2 = seq(-1, 1, box), group = factor(grps, levels = grps));groups <- data.frame(group = grps, v1 = c(1, .99, .01), v2 = c(2, 1.98, .02));df <- merge(df, groups); df$risk <- df$v1 * df$x1 + df$v2 * df$x2; ggplot(df, aes(x1, x2, fill = risk)) + geom_raster() + facet_wrap(~group, ncol = 1)` - alistaire