2016-05-19 9 views
0

Meine Daten sieht wie folgt aus:Wie Plus-Minus-Fehler zu Textbezeichnung in Plot hinzufügen?

var1, var2, mean, std 
1 , 2 , 3 , 4 
etc.. 

Ich möchte diese in eine Heatmap plotten, die wie dieses aussieht, aber ich will innerhalb jeder Zelle Beschriftungen hinzufügen, in diesem Stil: Mittelwert ± Standard (dh bedeuten plus minus Fehler). im obigen Fall wäre der Wert in der Zelle 3 ± 4 für var1-Spalte = 1 und var2-Zeile = 2 und ähnlich unterschiedliche Werte für andere Zellen.

Es ist nicht wichtig, dass es eine Heatmap ist, es könnte die Bezeichnung zu einem Punkt oder zu einer Bar sein, ich möchte nur die Etiketten erzeugen, so dass ich die Strings "mean ± std" für jedes Etikett: 3 ± 4. In meinem Fall mache ich eine Heatmap, wo die Farben auf dem Mittelwert basieren, wie hier: https://stackoverflow.com/a/14290705/1504411

Vielen Dank!

Antwort

4

Sie plotmath in geom_text verwenden können Einstellung parse = TRUE. Basierend auf Antwort des @ Rote Bete:

ggplot(dat) + 
    geom_text(aes(x = 1, y = 2.5, 
       label = paste(mean, std, sep = "%+-%")), 
      parse = TRUE) 
+0

danke das war das Recht zu denken, aber irgendwie " % + -% "hat nicht funktioniert, aber" \ u00B1 "von dir/Rote Bete hat funktioniert. – dval

+0

Wenn das "nicht funktioniert", verwenden Sie wahrscheinlich eine alte Version von ggplot2. – Roland

+0

Sie haben Recht, ich musste aktualisieren. Vielen Dank – dval

2

Sie können mit geom_text Etiketten erstellen und die mittleren und sd-Werte mit dem Plus-Minus-Vorzeichen wie die seperator Paste (\ u00B1 ist die jeweilige Unicode):

dat <- data.frame(var1 = 1, var2 = 2, mean = 3, std = 4) 

ggplot(dat) + 
    geom_text(aes(x = 1, y = 2.5, label = paste(mean, std, sep = "\u00B1"))) 
1

Dank Rote Bete ist und Rolands Antwort dies war meine letzte Code, arbeitete (plus einige Glocken und Pfeifen):

p1 <- ggplot(r_output, aes(var1, var2)) + 
    geom_tile(aes(fill = mean))+ 
    geom_text(aes(fill = mean, label = paste(round(mean, 2), round(std, 2), sep = "\u00B1")), size = 2)+    
    scale_fill_gradient(low = "red", high = "blue") + 
Verwandte Themen