使用ggplot2中的geom_tile自由缩放填充颜色

时间:2014-02-13 03:59:36

标签: r ggplot2

我想在ggplot2中使用geom_tile和facet_grid设置x面板的自由比例(参见下图)。我使用for循环并在不同的视口中打印来创建此图。

是否有简单的方法来创建相似的数字?

感谢您的任何建议。

这是重新创建我的数字的示例代码。

df <- list(x = 1:5, y = 1:5, xp = 1:3, yp = 1:3)
df <- expand.grid(df)
df$z <- df$xp * 10 + runif(nrow(df))

library(RColorBrewer)
cols <- rev(brewer.pal(11, 'RdYlBu'))
library(ggplot2)
p <- ggplot(df)
p <- p + geom_tile(aes(x, y, fill = z))
p <- p + facet_grid(xp~yp)
p + scale_fill_gradientn(colours = cols)


xp <- unique(df$xp)
library(grid)
for (i in seq(along = xp))
{
    df_i <- df[df$xp == xp[i],]
    p <- ggplot(df_i)
    p <- p + geom_tile(aes(x, y, fill = z))
    p <- p + facet_grid(xp~yp)
    p <- p + scale_fill_gradientn(colours = cols)
    p <- p + theme(
        plot.background = element_rect(fill = 'transparent', colour = 'transparent'),
        strip.background = element_rect(fill = 'transparent', colour = 'transparent'),
        axis.ticks = element_line(colour = 'transparent'))
    p <- p + xlab('') + ylab('')
    if (i > 1)
    {
        p <- p + theme(strip.text.x = element_text(colour = 'transparent'))
    }
    print(p, vp = viewport(0.5, 5/6 - (i - 1) * 0.28, 1, 0.4))
}

enter image description here

0 个答案:

没有答案