2016-05-28 18 views
1

Ich versuche, eine ggplot spezifische Arbeit zu finden, so dass ich Balkenplots erzeugen kann, in denen alle Balken die gleiche Breite haben. Ich weiß, dass dies daran liegt, dass ich "fehlende Werte" habe und dass die Balkenbreite Seite an Seite über ein Leerzeichen hinausgeht. ABER ich arbeite mit sehr großen Datensätzen und benutze Umformen, um die Daten breit zu machen und dann Platzhalterwerte einzufügen, um Leerstellen zu entfernen, ist nicht etwas, was ich tun möchte.R, ggplot bar, alle Balken gleich breit?

Testdaten:

df<-data.frame(tax=c("type1","type1","type1","type1","type2","type2"),Gene=c("a","b","c","c","a","b"),logFC=c(-2,-4,2,1,3,-1)) 

ggplot Code, der mir eine extra breite bar für "c" gibt

bar<-ggplot(df, aes(x=Gene, order=Gene,y=logFC,fill=tax))+ geom_bar(stat="identity",position="dodge") 

Irgendwelche Vorschläge, die mich nicht benötigen alle Werte in der Eingabe zu ändern df?

** Diese Frage ist kein Duplikat. Ich suche nach einer ALTERNATIVEN Lösung für das, was vorher gegeben wurde. Frühere Lösungen funktionieren nicht. Ich kann nicht einfach dcast (mit fill = 0) und schmelze meinen Datenrahmen (vertraue mir, ich habe das seit Wochen versucht). Ich bin auf der Suche nach einer ggplot spezifischen Antwort.

+0

Ich denke, es wird die breite Leiste bleiben, weil C nur zweimal type1 hat und es nicht Typ 2 – aelwan

+1

Dupes: [nicht Null zählen dodges bar plot] (http://stackoverflow.com/q/ 10326729/903061), [weichen Sie immer einem Histogramm aus] (http://stackoverflow.com/q/ 10149571/903061) usw. – Gregor

+0

Wenn Sie die Frage lesen, verstehe ich, warum dies passiert, und ich habe gelesen, wie die anderen Duplikate beantwortet beantwortet werden. Ich suche eine Alternative. Frühere Lösungen funktionieren NICHT mit meinem Datenrahmen. Ich habe zu viele Variablen und meine Datensätze sind zu groß. – shu251

Antwort

1

ich denke, es als eine große Bar bleiben, weil c nur Typ1 zweimal hat und es verfügt nicht über Typ-2-

Wenn Sie facet_wrap verwenden, wird es die gleiche Breite

ggplot(df, aes(x=Gene, y=logFC, color = tax))+ 
    geom_bar(stat = "identity", position="dodge", width=.5) + 
    facet_wrap(~tax) 

enter image description here bleiben

+1

Diese Lösung funktioniert, aber es löst mein Problem nicht. Da ich meine Daten nicht einfach wie gezeigt trennen kann. Ich habe zu viele Variablen und ein Facettenumbruch funktioniert nicht auf meine Daten. – shu251

+0

Dann müssen Sie, um Ihnen zu helfen, ein reproduzierbares Beispiel liefern, das Ihren Daten ähnlich ist! oder teile deine Daten. – aelwan

Verwandte Themen