2016-12-12 6 views
3

ich eine Heatmap wie folgt aufgetragen haben:Drehen obere Dreieck eines ggplot Fliese Heatmap

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

Dies zeichnet das obere Dreieck einer Heatmap. Was ich zeichnen möchte, ist das gleiche Dreieck, aber mit der Hypotenuse als x-axis.

enter image description here

Wie würde ich das tun?


Edit: Added reproduzierbares Beispiel

library(ggplot2) 

# dummy data 
df1 <- mtcars[, c("gear","carb", "mpg")] 

# normal tile plot 
gg1 <- ggplot(df1, aes(gear, carb, fill = mpg)) + 
    geom_tile() + 
    xlim(c(1, 10)) + 
    ylim(c(1, 10)) + 
    theme_void() + 
    theme(legend.position = "none") 

enter image description here

Erwartete Ausgabe (manuell gedreht):

enter image description here

Verwandte uns schreiben ing Grundstück image(): Visualising and rotating a matrix

Mögliche Lösung Beispielcode ist in LDheatmap packagegrid verwenden.

+0

@Gregor Ich denke, sie/ich will 45 Grad . – zx8754

+1

Sie werden die Top-Lage haben, aber @ Baptistes Antwort auf [dieses Q] (https://StackOverflow.com/questions/24312713/rotate-a-ggplot2-plot-Object) wird Sie näher bringen, wenn Sie es lösen können die Clipping-Probleme. – BrodieG

+0

@BrodieG tatsächlich nahe genug, aber Clipping-Probleme. – zx8754

Antwort

0

this solution Verwendung wird die Ausgabe am unteren Rand abgeschnitten, so würde Abhilfe zusätzliche Plot Seitenränder werden dann grid::viewport() verwenden drehen:

library(ggplot2) #ggplot2_2.2.1 
library(grid) 

gg1 <- ggplot(df1, aes(gear, carb, fill = mpg)) + 
    geom_tile() + 
    xlim(c(1, 10)) + 
    ylim(c(1, 10)) + 
    theme_void() + 
    # add extra margins 
    theme(legend.position = "none", 
     plot.margin = unit(c(1, 1, 1, 1), "cm")) 

# then rotate 
print(gg1, vp = viewport(angle = 45)) 

enter image description here