2015-04-27 4 views
0

Моя проблема отличается от этого Side-by-side plots with ggplot2. Две причины: 1) С помощью функции aheatmap(), тепловая карта с помощью aheatmap() и штрих-кодов другими функциями не может сохраняться на одном снимке, когда я использую gridExtra. 2) Я хочу, чтобы «барьеры соответствовали строкам/столбцам тепловой карты». Я попытался с gridExtra, но изображение изменилось с различными наборами данных.Добавление barplots вокруг heatmap с использованием R

Я хочу объединить некоторые барьеры с теплоизоляцией, чтобы левая/правая штриховая панель соответствовала строкам тепловой карты, а кроме того, верхний/нижний планшеты соответствуют колонкам тепловой карты. Как эта картина (и barplot в нижней части) MATLAB Bar graph + HeatMap/Imagesc

Теперь aheatmap() в пакете NMF используется и код, как следующие (но я можите добавить barplots):

n <- 50; p <- 20 
x <- abs(rmatrix(n, p, rnorm, mean=4, sd=1)) 
x[1:10, seq(1, 10, 2)] <- x[1:10, seq(1, 10, 2)] + 3 
x[11:20, seq(2, 10, 2)] <- x[11:20, seq(2, 10, 2)] + 2 
rownames(x) <- paste("ROW", 1:n) 
colnames(x) <- paste("COL", 1:p) 
annotation = data.frame(Var1 = factor(1:p %% 2 == 0, labels = c("Class1", "Class2")), Var2 = 1:10) 
aheatmap(x, annCol = annotation, Rowv=FALSE) 

Любые предложения по добавлению штрих-кодов с использованием aheatmap() или даже с использованием других пакетов?

+0

возможно дубликат [Бок о бок участков с ggplot2 в R] (http://stackoverflow.com/questions/1249548/side-by-side-plots-with-ggplot2-in-r) – PoGibas

+0

Они разные! Я пробовал свои методы, и они не могут выполнить мои требования. , Обратите внимание, что «штриховые знаки соответствуют строкам/столбцам тепловой карты», – chare

+0

[This] (http://stackoverflow.com/questions/24147500/r-heatmap-type-plot-with-frequency-plot/24148288#24148288) и [this] (http://stackoverflow.com/questions/24932381/ggplot2-adding-stacked-barchart-to-heatmap) может помочь – user20650

ответ

0

Как насчет чего-то в этом направлении?

m <- matrix(abs(rnorm(25 * 10)), ncol = 25) 

plotMyHeat <- function(x) { 
    x <- t(x) 
    l <- matrix(c(1,2), ncol = 2) 
    layout(l) 
    op <- par(mar = c(2,2,1,0)) 
    image(x) 
    par(mar = c(2,1,1,1)) 
    barplot(rowMeans(x),horiz = TRUE, yaxs = "i") 
    par(op) 
} 

plotMyHeat(m) 
+0

Это очень полезно. И http://stackoverflow.com/questions/24188986/r-ggplot2-make-two-geom-tile-plots-have-equal-height/24189239#24189239 очень много. – chare

Смежные вопросы