2016-10-04 2 views
0

Ich versuche, einen heatmap Plot mit ggplot 's geom_tile zu generieren. Meine Daten haben weit mehr Zeilen als Spalten.Getom_tile zum Zeichnen von quadratischen anstelle von rechteckigen Zellen

set.seed(1) 
    df <- data.frame(val=rnorm(100),gene=rep(letters[1:20],5),cell=c(sapply(LETTERS[1:5],function(l) rep(l,20)))) 

Running:

library(ggplot2) 
ggplot(df,aes(y=gene,x=cell,fill=val))+geom_tile(color="white") 

produziert: enter image description here

Wie erhalte ich die heatmap Zellen von symmetrischen Dimensionen zu sein - Quadrate statt Rechtecke (height = Breite)? ohne die Dimensionen der Figur zu verzerren.

Antwort

3

Tweak das Verhältnis wie folgt

set.seed(1) 
df <- data.frame(val=rnorm(100),gene=rep(letters[1:20],5), 
      cell=c(sapply(LETTERS[1:5],function(l) rep(l,20)))) 

library(ggplot2) 
p <- ggplot(df,aes(y=gene,x=cell,fill=val))+geom_tile(color="white") 
p <- p + coord_fixed(ratio = 0.7) 
p 

enter image description here

+0

Aber wenn Meine tatsächlichen Daten haben viel mehr Zeilen: df <- data.frame (val = rnorm (500), gen = rep (1: 100,5), cell = c (sapply (LETTER [1: 5], function (l) rep (l, 100)))), verkleinert dies die Figur enorm. – dan

+2

Aber ... Sie _want_ Quadrate. Ich bin mir nicht sicher, wie Sie Quadrate ohne eine lange Handlung bekommen wollen. Du könntest 'coord_flip()' es (ich würde das x & y austauschen, bevor ich das versuche, da es dasselbe ist und leichter zu merken ist). ODER Sie könnten es in 2, 3, 4 Diagramme partitionieren, aber behalten Sie die gleiche Farbskala. – hrbrmstr

6

Eine Option ist coord_equal hinzuzufügen.

Die Standardeinstellung Verhältnis = 1 ist, stellt sicher, dass eine Einheit auf der x-Achse ist die gleiche Länge wie eine Einheit auf der y-Achse

ggplot(df, aes(y = gene, x = cell, fill = val)) + 
    geom_tile(color = "white") + 
    coord_equal() 

enter image description here

Verwandte Themen