Scatterplot mit marginalen Histogrammen in ggplot2
Gibt es eine Möglichkeit, die Erstellung von streudiagrammen mit marginalen Histogrammen wie in dem Beispiel unten in ggplot2
? In Matlab ist es die scatterhist()
Funktion, und es gibt Entsprechungen für R als gut. Ich habe jedoch nicht gesehen, dass es für ggplot2.
Ich einen Versuch gestartet, durch das erstellen der einzelnen Grafiken, aber nicht wissen, wie Sie ordnen Sie richtig zu.
require(ggplot2)
x<-rnorm(300)
y<-rt(300,df=2)
xy<-data.frame(x,y)
xhist <- qplot(x, geom="histogram") + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 5/16, axis.text.y = theme_blank(), axis.title.y=theme_blank(), background.colour="white")
yhist <- qplot(y, geom="histogram") + coord_flip() + opts(background.fill = "white", background.color ="black")
yhist <- yhist + scale_x_continuous(limits=c(min(x),max(x))) + opts(axis.text.x = theme_blank(), axis.title.x=theme_blank(), axis.ticks = theme_blank(), aspect.ratio = 16/5, axis.text.y = theme_blank(), axis.title.y=theme_blank() )
scatter <- qplot(x,y, data=xy) + scale_x_continuous(limits=c(min(x),max(x))) + scale_y_continuous(limits=c(min(y),max(y)))
none <- qplot(x,y, data=xy) + geom_blank()
und arrangieren Sie mit der Funktion gepostet hier. Aber lange Rede, kurzer Sinn: gibt es eine Möglichkeit schaffen, diese Graphen?
InformationsquelleAutor der Frage Seb | 2011-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
gridExtra
Paket sollte hier arbeiten. Beginnen Sie, indem Sie jede der ggplot-Objekte:Dann verwenden Sie das raster.arrangieren-Funktion:
InformationsquelleAutor der Antwort oeo4b
Ist dies nicht eine völlig responsive beantworten, aber es ist sehr einfach. Es zeigt eine Alternative Methode zur Darstellung von marginalen dichten und auch wie zu verwenden von alpha-Niveaus für die grafische Ausgabe, das Transparenz unterstützt:
InformationsquelleAutor der Antwort 42-
Dies ist möglicherweise ein wenig spät, aber ich entschied mich für ein Paket (
ggExtra
) für dieses da es sich ein bisschen code und mühsam sein kann, zu schreiben. Das Paket wird auch versucht, mit einigen der häufigsten Frage, wie die Sicherstellung, dass selbst wenn es ein Titel oder der text wird vergrößert, die Stellplätze werden immer noch inline mit einem anderen.Die Grundidee ist ähnlich zu dem, was hier die Antworten gab, aber es geht ein bisschen darüber hinaus. Hier ist ein Beispiel, wie Sie marginale Histogramme zu einem zufälligen Satz von 1000 Punkten. Hoffentlich macht dies es einfacher, hinzufügen, Histogramm/Dichte-plots in der Zukunft.
Link zu ggExtra Paket
InformationsquelleAutor der Antwort Dean Attali
Eins hinaus, nur um einige zu retten suchen Zeit für Menschen, dies zu tun, nach uns.
Legenden, Achsenbeschriftungen, Achse, Texte, Zecken machen die Grundstücke drifteten voneinander Weg, so dass Ihr Grundstück Aussehen wird hässlich und inkonsistent.
Können Sie dies korrigieren, indem Sie einige dieser Themen-Einstellungen,
und ausrichten Skalen,
daher sind die Ergebnisse OK Aussehen:
InformationsquelleAutor der Antwort Lorinc Nyitrai
Nur eine sehr geringe variation auf BondedDust Antwortin der Allgemeine Geist der marginale Indikatoren der Verteilung.
Edward Tufte nennt diese Verwendung von Teppich-plots ein "dot-dash plot', und hat ein Beispiel in VDQI mit der Achse Linien, die den Bereich angeben der einzelnen Variablen. In meinem Beispiel die Achsen-Beschriftungen und Gitterlinien zeigen auch die Verteilung der Daten. Die Etiketten befinden sich an den Werten der Tukey ' s fünf-Zahl Zusammenfassung (minimum, unteren hinge, median, oberen hinge, maximum), was einen schnellen Eindruck von der Verbreitung der einzelnen Variablen.
Diese fünf zahlen sind, so ist eine numerische Darstellung eines boxplots. Es ist ein bisschen schwierig, weil die ungleichmäßig verteilt sind raster-Linien suggerieren, dass die Achsen haben eine nicht-lineare Skala (in diesem Beispiel ist Sie linear sind). Vielleicht wäre es am besten auslassen, raster, Linien oder Kraft zu werden im gewohnten Orten, und lassen Sie die Etiketten zeigen die fünf-Zahl Zusammenfassung.
InformationsquelleAutor der Antwort Ben
Da gab es keine befriedigende Lösung für diese Art von plot beim Vergleich verschiedener Gruppen, schrieb ich eine Funktiondies zu tun.
Es funktioniert sowohl für gruppierte und Ungruppierte Daten und übernimmt zusätzliche grafische Parameter:
InformationsquelleAutor der Antwort Hav0k
Ich habe das Paket (
ggpubr
), scheint zu funktionieren sehr gut für dieses problem und es hält mehrere Möglichkeiten zur Anzeige der Daten.Den link zum Paket, ist hierund in dieser link finden Sie eine schöne tutorial, es zu benutzen. Der Vollständigkeit halber füge ich eines der Beispiele, die ich reproduziert.
Ich zuerst das Paket installiert wurde (es erfordert
devtools
)Für das Besondere Beispiel für die Anzeige verschiedener Histogramme für verschiedene Gruppen, es erwähnt im Zusammenhang mit
ggExtra
: "Eine Einschränkung derggExtra
ist, kann es nicht verkraften, mehrere Gruppen in der scatter plot und der marginal plots. In der R-code unten, wir bieten eine Lösung mit dercowplot
- Paket." In meinem Fall, ich hatte mit der Installation der letztgenannten Paket:Und ich folgte diesem Stück code:
Arbeitete gut für mich:
Iris-set marginales Histogramm Streudiagramm
InformationsquelleAutor der Antwort Alf Pascu
Können Sie ganz einfach erstellen Sie attraktive streudiagramme mit marginalen Histogrammen mit ggstatsplot (es wird auch fit und beschreiben ein Modell):
Oder etwas mehr Ansprechend (standardmäßig) ggpubr:
UPDATE:
Vorgeschlagen von @aickley ich verwendet die Entwicklungs-version zu erstellen, die Handlung.
InformationsquelleAutor der Antwort epo3