2012-04-04 10 views
15

Ich möchte ein Grundstück mit ggplot machen, die zu dieser (found here) ganz in der Nähe aussieht:Wie kann man mit ggplot einen nicht standardmäßigen Plottyp erzeugen?

enter image description here

jedoch anstelle der Frequenz würde ich Bereiche für Bedingungen zeichnen möchten. Hier ist eine Skizze der Handlung I mit 5 Bedingungen produzieren will:

enter image description here

Meine Daten als Start angeordnet ist und das Ende für den Bereich koordinieren. Zum Beispiel ist für den Zustand 5 der Anfang des Bereichs 30 und das Ende des Bereichs ist 40 (ich habe dies aus Gründen der Klarheit über die Grafik beschriftet). Meine Daten aus einer Datei in der Form:

id  start end 
1  20  35 
2  60  75  
3  10  30 
4  80  90 
5  30  40 

ich etwa 100 Anfangs- und Endwerte haben, die Ich mag würde auf ein Diagramm auf diese Weise darzustellen. Die endgültige Handlung sollte nur zwei Farben sein.

UPDATE:

Für die Zukunft, Justin-Lösung erzeugt dies:

enter image description here

+1

sehr schön angegebene Frage! –

Antwort

13

Etwas wie folgt aus:

library(ggplot2) 
library(reshape) 
dat <- data.frame(lets=letters[1:5], low=1:5, mid=3:7, high=10:14) 
dat.melt <- melt(dat, id.vars='lets') 


ggplot(dat.melt, aes(x=lets, y=value, fill=variable)) + 
    geom_bar(stat='identity') + 
    scale_fill_manual(breaks=c('low','mid','high'), values=c('blue','red','blue')) + 
    coord_flip() 

aber ziemlich abhängig von Ihrer Daten ...

+0

Wow, genau das suche ich. Ich habe immer noch Probleme, meine Daten in die richtige Datenstruktur für Ihr Beispiel zu schmelzen. Wie kann ich meine Daten wie 'dat.melt' aufschmelzen? Ich habe versucht zu schmelzen (id, start, end), aber das hat nicht funktioniert. Ich habe meine Frage bearbeitet, um die Struktur meiner Daten zu zeigen. Vielen Dank. – drbunsen

+5

'schmelzen (yourdata, id.vars = 'id')' wird Ihnen eine Struktur geben wie das, was ich habe. Sie können die erste Farbe auch durch "NA" ersetzen, so dass nur der schattierte Bereich in Ihrem Bild farbig ist. – Justin

+0

Super, vielen Dank. Das war genau das, wonach ich suchte. – drbunsen

Verwandte Themen