Dual-Grundstück teilen die gleiche x-Achse in ggplot2
Ich habe einen Datensatz in diesem format.
head(sppec.p)
Wavelength_.nm. Mean Lower Upper Species Feature_selection Count
1 400 0.1467549 0.1290778 0.2758327 ALAL T-test 0
2 405 0.1454303 0.1271905 0.2726207 ALAL T-test 0
3 410 0.1464431 0.1290472 0.2754903 ALAL T-test 0
4 415 0.1468586 0.1298166 0.2766753 ALAL T-test 0
5 420 0.1485061 0.1310419 0.2795480 ALAL T-test 0
6 425 0.1517019 0.1342690 0.2859708 ALAL T-test 0
Ich ursprünglich geplant auf tun, eine zwei-Achsen-Diagramm, aber nach der Suche hier, habe ich realisiert, dass es war "nicht möglich" in ggplot
und viele von denen abgeraten solche plots. Deshalb habe ich mich entschieden für eine Facette Grundstück. Ich habe versucht, die einzelnen Parzellen den ersten, aber ich kann nicht herausfinden, wie zu verwenden facet_wrap
und scales = "free_y"
um die 2 Grundstücke identischer x-Achse, aber verschiedenen y-Achse.
Code für die einzelnen Graphen:
myplot<-ggplot(sppec.p, aes(x=Wavelength_.nm., y=Mean, group=Species, linetype = Species,
ymin = Lower, ymax = Upper)) +
geom_ribbon(alpha = 0.2,fill='gray') +
geom_line() + theme_bw() +scale_fill_grey(start = 0.1, end = 0.9) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,3)
myplot + theme_bw ()+ opts(axis.line = theme_segment(colour = "black"),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank())
...die produziert
Und die zweite Grafik:
cum.totals<-ggplot(sppec.p, aes(Wavelength_.nm., y=Count, fill = factor(Feature_selection))) + geom_bar(stat="identity")
cum.totals + theme_bw() +scale_fill_grey(start = 0.1, end = 0.9)+
opts(axis.line = theme_segment(colour = "black"),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
panel.border = theme_blank(),
panel.background = theme_blank())
Graph erzeugt:
Obwohl beide y-Achse angezeigt, numerisch äquivalent, Sie stehen für verschiedene Werte.
Ich bin nicht sehr vertraut mit ggplot
und ich würde gerne wissen, wie facet_wrap
oder jede andere Funktion, die mir geben würde, die 2 Grundstücke die gemeinsame Nutzung der gleichen a-Achse, aber in 2 Facetten. Ist es möglich, dass mein code effizienter?
Also im wesentlichen das layout der letzten Ausgabe wäre etwas wie dieses:
Im wesentlichen ja. Etwas ähnliches wie die Antwort gepostet von Mark Parker gefunden hier. Aber ich müsste die entsprechenden Legenden neben der entsprechenden Grundstücke.
Wie ich bereits in meiner Antwort, die zwei y-Werte, die in Ihrer Frage nicht vergleichbar sind, in der Erwägung, dass in der verlinkten Frage, die Sie wahrscheinlich sind. Deshalb schmiedet Pläne, beide von Ihnen im gleichen Diagramm ist nicht eine gute pactice. Und Matt ' s Antwort verwendet
facet
das ist wahrscheinlich nicht der richtige trick hier wie bereits in meiner Antwort.Ich glaube ich habe die Lösung zu einem ähnlichen problem hier
Finden Sie diese Antwort
InformationsquelleAutor user2507608 | 2013-11-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Facet
ist nützlich, wenn Sie den gleichen Typ von Diagramm ist unterteilt in mehrere Kategorien. Ihre situation ist anders. Überprüfen Sie heraus den Eintrag Hilfe auf die verschiedenenfacet_grid
undfacet_wrap
um den Unterschied zu sehen. Hier ist etwas Hilfe für die ersten Schritte -ich bin kein großer fan von zwei verschiedenen y-Achsen, mit der gleichen x-Achse (das ist das, was du versuchst zu tun gibt, wenn ich das richtig verstanden habe). Stattdessen versuchen
gridExtra::arrangeGrob
mit dem argumentncol = 1
Ihre Diagramme gestapelt vertikal übereinander, so dass Sie identische x-Achsen übereinander und erzielen eine ähnliche Wirkung.gridExtra::arrangeGrob
. Nur zur Klarstellung, ich wollte nicht, dass ein dual y-Achse graph (ein graph mit den beiden vertikalen Balken-chart und line graph). Zum Beispiel, statt mit einer Zeile und 3 Spalten wie im Beispiel, die Sie haben, Suche ich 2 Zeilen und eine Spalte (wenn es mehr Sinn macht Sie???)Mir ist gerade eingefallen, man könnte auch versuchen, plain ol'
rbind
.rbind
auf der ggplot-Objekte? Das wäre interessantÜberprüfen Sie diese - stackoverflow.com/questions/16255579/...
InformationsquelleAutor TheComeOnMan