【发布时间】:2014-03-20 19:15:34
【问题描述】:
我有以下代码生成k=2 类的图列表。
library(ggplot2)
library(cumplyr)
library(scales)
library(reshape2)
library(RColorBrewer)
library(tools)
library(gridExtra)
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")))
x = 1:50
y = 1:50
pts = cartesian_product(c('x','y'))
make_df <- function(i) {
k = if(i <= 5) 1 else 2
d1 = cbind(pts, runif(nrow(pts),min=0,max=10*i), 1)
colnames(d1) = c("x","y","val", "k")
return(d1)
}
dflist = lapply(as.list(1:10),make_df)
make_plot <- function(data, gmin = 0, gmax = 100) {
p1 <- ggplot(data)
p1 <- p1 + geom_tile(aes(x = x, y = y, fill = val))
p1 <- p1 + scale_fill_gradientn(colours = myPalette(gmax), limits=c(gmin,gmax))
return(p1)
}
plotlist = lapply(dflist, make_plot)
g = do.call(arrangeGrob, plotlist)
我在情节的最终安排上遇到了麻烦。这些图的类型可以是 k=1 或 k = 2。我想:
- 以 2 x 5 的网格排列图,
- 只有 1 个图例
- 用适当的 k 值标记每一行图
- 让沿行引号的图彼此靠近,也许每个图之间只有一个小间隙
我已经用这个旋转了几个小时,但无济于事!
谢谢!
【问题讨论】:
-
您不使用
facet_grid是否有特定原因?听起来就像它会产生你想要的一样。 -
BrodieG,具体原因是我对它的存在一无所知:)。感谢您的参考。
-
如果你因为某些原因不想使用
facet_grid,可以从this answer得到一些启发