2016-04-14 9 views
1

Ich versuche zu erstellen, was im Wesentlichen ein Gantt-Diagramm mit ggplot2 ist. Ich benutze gerade die geom_tile Option in ggplot2, um etwas zu erzeugen, das sehr nah an dem ist, was ich brauche. Auf der X-Achse ist Monat, auf der Y-Achse ist Aufgabe, und die Farbe der Blöcke ist Stunden Aufwand für diesen Monat.ggplot geom_tile rechts gerecht

Das Problem: Die Blöcke sind auf den Monat zentriert. Ich brauche sie rechtsbündig, damit der Block, wenn ein Monat erscheint, rechts von der vertikalen Gitterlinie steht, die diesen Monat anzeigt.

Gibt es eine Option wie hjust für geom_tile? Hier ist mein Code so weit:

myGanttPlot <- ggplot(data=gantt_data, aes(x=workMonth, y=myTasks, fill=Hours, height=0.5)) + 
       geom_tile(hjust=1.0) + 
       scale_fill_distiller(palette="RdYlGn") 

Ich bekomme den Fehler "Unbekannte Parameter: hjust" mit diesem Code. Gibt es eine bessere Syntax, die ich verwenden sollte?

+1

Das Verschieben des Werts von 'workMonth' sollte dafür sorgen. Funktioniert 'aes (x = workMonth + 0.5, ...)', was Sie brauchen? – eipi10

+0

Ich habe vergessen zu erwähnen, dass workMonth vom Typ POSIXct ist. Aber, ja, das scheint zu funktionieren, wenn ich 15 Tage addiere, damit die Daten in die Mitte des Monats fallen. Gute Idee - Danke! –

Antwort

1

Wenn Sie den Wert workMonth um ~ 15 Tage verschieben, sollten Sie darauf achten, indem Sie die Kacheln zwischen Monaten und nicht auf ihnen zentrieren.

ggplot(data=gantt_data, aes(x=workMonth + 60*60*24*15, y=myTasks, fill=Hours, height=0.5)) + 
       geom_tile() + 
       scale_fill_distiller(palette="RdYlGn") 

Ohne ein reproduzierbares Beispiel kann ich den obigen Code nicht testen, so lassen Sie es mich wissen, ob dies Ihr Problem löst.

+1

Ja, Problem gelöst. Ich habe die Funktionen verwendet, um meiner POSIXct-Zeitvariable 15 Tage hinzuzufügen, um das obige zu erreichen. Ich habe den hier beschriebenen Prozess verwendet: http://stackoverflow.com/questions/11922181/adding-time-to-posixct-object-in-r –

+0

Ja, 'POSIXct' Daten sind in Sekunden, so dass Sie nur 60 hinzufügen müssen * 60 * 24 * 15 Sekunden, um 15 Tage zu Ihren Daten hinzuzufügen. Ich habe meine Antwort entsprechend aktualisiert. – eipi10

Verwandte Themen