2016-12-13 143 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码。