2016-12-13 4 views
0

ich Grundstück haben ganz einfach eine Matrix (also eine Heatmap geben) mit ggplot wie folgt aus:drehen, um eine Matrix 45 Grad und visualisieren ggplot mit

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") 

Da ich nur den unteren Teil des Heatmap haben, es dieses Grundstück gibt:

enter image description here

Aber ich möchte die Matrix 45 Grad drehen, so wie ich hier finden: Visualising and rotating a matrix. Also, die Diagonale neben der X-Achse. Sie verwenden jedoch die Grafiken von R ohne ggplot. Hast du eine Idee, wie man das mit ggplot macht?

+0

Stellen Sie die gleiche Frage erneut: http://stackoverflow.com/questions/41108399/ggplot-rotate-upper-triangle-of-a-heatmap? – MrFlick

+0

Es ist ein anderer. – user2979409

+0

Ursprünglich dachte ich, dass die "Hypotenuse" von der oberen linken Ecke "down-going" sein soll, aber das ist mehr eine 90-Grad-Drehung. Was willst du genau? Und posten Sie einen kleinen Datensatz, der der Struktur Ihrer Daten ähnelt. –

Antwort

0

Sie können zunächst die Matrix (Datenrahmen) durch die folgende Funktion drehen:

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) 
} 

Drehen der Datenrahmen um 90 Grad gegen den Uhrzeigersinn von

test2 <- rotate(test, -90) 

Dann Test2 plotten, indem unter Verwendung derselben Code.

Verwandte Themen