2017-08-17 2 views
0

Ich versuche, "Heat" -Daten für jeden dieser Punkte grafisch darzustellen, d. H. Eine univariate ganze Zahl für jede Position.So zeichnen Sie eine Heatmap in ggplot mit "gestaffelten" Punkten

Das Bild ist:

enter image description here

Ich habe nicht die Daten noch nicht, aber ich werde es wie diese, wo haben, mit dem Daten Erwerber vereinbart, gestaffelt ich die Positionen auf der x-Achse Hilf mir, räumlich zu wissen, wo ich hinsehe (wo x und y effektiv zusammen sind, ist T die Temperatur).

x y T 
1 1 5 
3 1 5 
5 1 6 
7 1 5 
9 1 6 
11 1 7 
2 2 7 
4 2 5 
6 2 4 
8 2 5 
10 2 6 
1 3 7 
3 3 8 
5 3 8 
7 3 7 
9 3 8 
11 3 9 
2 4 9 
4 4 13 
6 4 13 
8 4 9 
10 4 9 

Wie kann ich diese Heatmap mit ggplot (oder einem ähnlichen Tool) am besten visuell darstellen? Ich wollte nur Boxen mit Leerzeichen haben (da zB (1,2) nicht existiert), aber das Projektteam will das nicht!

Es ist mir egal, wenn die Punkte rund sind, Quadrat/Rechteck ist in Ordnung.

Vielen Dank im Voraus und hoffentlich war meine Frage klar.

+0

Wenn das Projektteam keine Leerzeichen will, Was genau willst du? Bitte geben Sie die gewünschte Ausgabe an, damit die Frage beantwortet werden kann. Was sind die spezifischen Anforderungen? – MrFlick

+0

Im Bild, weil die Gefäße rund sind, sind sie natürlich gestaffelt gestapelt, also möchte ich diese versetzte Position darstellen. Ich habe Datenpunkte für jede Position (nicht nur die markierten, Entschuldigung, wenn das verwirrend war) – SNOYL

+0

Aber wie würde die Handlung wissen welche Werte fehlen im Vergleich zu welchen Werten nicht existieren? Was ist der "Bereich" von x und y? – MrFlick

Antwort

1

Ich würde aktualisieren @ TTNK Antwort runde Punkte zu verwenden, wie Ihre Fässer, und die Koordinaten zu beheben anzupassen kreisförmige Verpackung, nicht Quadrate.

ggplot(df, aes(x, y, fill = Temp)) + 
    geom_point(shape = 21, size = 21, stroke = 3) + 
    scale_y_continuous(expand = c(0.25,0)) + 
    scale_x_continuous(breaks = 1:11, expand = c(0.25,0)) + 
    coord_fixed(ratio = tan(pi/3)) + 
    theme_classic() 

enter image description here

Während Sie Ihrem Schaltplan näher kommen, müssen Sie sich mit den Argumenten size = und stroke = herumschlagen, um Ihre Fässer zu berühren. Wenn Sie wollen, dass automatisch und im richtigen Seitenverhältnis zu sein, aber nicht so viel über die Rundheit kümmert, geht mit geom_hex:

ggplot(df, aes(x, y, fill = Temp)) + 
    geom_hex(stat = "identity", colour = "white") + 
    scale_y_continuous(expand = c(0.25,0)) + 
    scale_x_continuous(breaks = 1:11, expand = c(0.25,0)) + 
    coord_fixed(ratio = tan(pi/3)) + 
    theme_classic() 

enter image description here

+2

Kudos für 'coord_fixed (ratio = tan (pi/3)) '. Auf jeden Fall verberge ich diesen für zukünftige Verwendung! Ich dachte meinen Weg dorthin, aber meine Trigon war zu rostig. :) – TTNK

+0

@TTNK, muss ich immer überprüfen, indem Sie ein Dreieck zeichnen, um den Satz des Pythagoras zu verwenden und die tatsächliche Zahl zu erhalten. – Brian

2

Vielleicht so etwas? Mit Hilfe der geom_point Funktion von package::ggplot2 (im tidyverse, mit einem übergroßen Glyphe:

library(tidyverse) 

# Generating a data frame with alternating odds and evens 
# Probably overwrought but makes the example cleaner 

> df <- data.frame(x = rep(c(seq(1, 11, by = 2), seq(2, 10, by = 2)), 2), 
       y = rep(1:4, times = c(6, 5, 6, 5)), 
       'T' = sample(5:13, 22, replace = TRUE)) 

> head(df, 10) 
    x y T 
1 1 1 10 
2 3 1 12 
3 5 1 8 
4 7 1 10 
5 9 1 12 
6 11 1 12 
7 2 2 9 
8 4 2 9 
9 6 2 6 
10 8 2 10 

> df %>% ggplot(aes(x, y)) + 
    geom_point(aes(fill = T), size = 20, shape = 23) + 
    ylim(0, 5) + 
    xlim(0, 12) + 
    coord_fixed(ratio = 1) + 
    theme_minimal() 

enter image description here

Verwandte Themen