Это в основном тот же вопрос this one, но с одним важным отличием: я хочу ggplot2 на основе плитки участок с горизонтальных панелей, и где все плитки имеют одинаковую высоту , Другой вопрос касался вертикальных панелей.ggplot2 плитка участки с горизонтальными панелями различной высоты
Вот пример код, на основе одного в другом вопросе:
d = data.frame(sites=rep(paste("S", 1:31),each=12),
month=factor(rep(1:12,31)),
value=runif(31*12),
panel=c(rep("Group 1",16*12), rep("Group 2", 12*12),
rep("Group 3", 3*12)))
Plotting это с помощью
ggplot(d, aes(x=month, y=sites, fill=value)) +
geom_tile(colour="white") + facet_wrap(~panel, nrow=1)
результатов в
В принципе, я хочу каждый блок синего плитки переместились вверх, так что над ними нет места. Я могу добиться этого с помощью
ggplot(d, aes(x=month, y=sites, fill=value, colour="white")) +
geom_tile(colour="white") + facet_wrap(~panel, scales="free_y", nrow=1)
, но это приводит к плиткам неравной высоты:
The other question имел хорошее решение для вертикальных панелей, но их применение для приведенной выше коды не имеет никакого эффекта. Есть ли аналогичное решение для горизонтальных панелей?
Спасибо за хорошее решение. И достаточно легко перейти на перемещение блоков вверх, а не снизу. Однако одна вещь, которую я бы изменила, - это 'lvls <- unique (as.character (d.sub $ sites))' to 'lvls <- levels (droplevels (d.sub $ sites))', чтобы сохранить порядок строки (это не имеет значения для моих примерных данных, так как строки уже были помечены/упорядочены численно), но для других данных это будет иметь значение. –