2016-12-13 182 views
0

我有情節相當容易的矩陣(從而得到熱圖)與ggplot這樣想象它:旋轉矩陣45度和使用ggplot

test <- data.frame(start1=c(1,1,1,1,2,2,2,3,3,4),start2=c(1,2,3,4,2,3,4,3,4,4),logFC=c(5,5,1,0,8,0,5,2,4,3)) 
ggplot(test, aes(start1, start2)) + 
    geom_tile(aes(fill = logFC), colour = "gray", size=0.05) + 
    scale_fill_gradientn(colours=c("#0000FF","white","#FF0000"), na.value="#DAD7D3") 

由於我只有熱圖的下部,它給出了這樣的情節:

enter image description here

但我想旋轉矩陣45度,就像我可以在這裏找到:Visualising and rotating a matrix。所以,對角線在X軸旁邊。但是,他們使用R的圖形而沒有ggplot。你有什麼想法如何做到這一點與ggplot

+0

你是否重新提出相同的問題:http://stackoverflow.com/questions/41108399/ggplot-rotate-upper-triangle-of-a-heatmap? – MrFlick

+0

這是一個不同的。 – user2979409

+0

原本我以爲你想讓「斜邊」從左上角「下降」,但更多的是90度旋轉。那麼你想要什麼呢?併發佈一個類似數據結構的小數據集。 –

回答

0

可以通過以下函數首先旋轉矩陣(數據幀):

rotate <- function(df, degree) { 
    dfr <- df 
    degree <- pi * degree/180 
    l <- sqrt(df$start1^2 + df$start2^2) 
    teta <- atan(df$start2/df$start1) 
    dfr$start1 <- round(l * cos(teta - degree)) 
    dfr$start2 <- round(l * sin(teta - degree)) 
    return(dfr) 
} 

旋轉90度的數據幀由

test2 <- rotate(test, -90) 

然後逆時針通過使用相同的繪製TEST2碼。