Boxplot mit Achse Grenzwerte in R
Ich habe Daten im tab-delimited-format, die mit fast 400 Spalten mit Werten gefüllt, dh
X Y Z A B C
2.34 .89 1.4 .92 9.40 .82
6.45 .04 2.55 .14 1.55 .04
1.09 .91 4.19 .16 3.19 .56
5.87 .70 3.47 .80 2.47 .90
Nun möchte ich die Visualisierung der Daten mit Hilfe von box-plot-Methode.Obwohl es schwierig ist, anzeigen 400 im single-odf,ich möchte, aufgeteilt in 50 jeder.ie(50 x 8).Hier ist der code, den ich verwendet:
boxplot(data[1:50],xlab="Samples",xlim=c(0.001,70),log="xy",
pch='.',col=rainbow(ncol(data[1:50)))
aber ich bekam die folgende Fehlermeldung:
Im plot.window(xlim = xlim, ylim = ylim, log = log, yaxs = pars$yaxs)
: nonfinite Achse Grenzwerte [GScale(-inf,4.4591,2, .); log=1]
Ich wollen, um die box-plots für 400 Proben mit 50 in 8 verschiedenen pdf....Bitte helfen Sie mir, um bessere Visualisierung.
- Sie sind Plotten 400 Boxen in der gleichen Grafik?
- Sind die kategorischen Spalten? Wenn dem so ist, warum verwenden Sie eine logarithmische Achse? Wenn nicht sollten Sie vielleicht normalisieren die dataset, so dass die Spalte Typ bekommt es das eigene Feld (als pro @Ben ' s Antwort) - Sie finden es einfacher zu machen, Einblick in Ihre Spalten so.
- Ja, ich möchte plot in der gleichen Kurve
- Ich denke, Sie finden es schwierig, produzieren eine aussagekräftige Grafik mit so viel Daten drauf. Sie Mai wollen Teilmenge Ihrer Daten mit den Spalten, die am interessantesten für Ihre Anwendung.
- PS ein log-y Skala macht Sinn, aber können Sie erklären, ein bisschen mehr Ihre Absicht, über eine logarithmische x-Achse? (diese folgt bis @RobinGower Frage oben). Auch, was ist
raw.expression
oben? Ist es das gleiche wiedata
? Verwendung von Farben zur Unterscheidung von Kategorien ist eine gute Idee, aber wenn dieser Befehl kommt zurainbow(400)
dann wird es schön, aber eigentlich nicht sehr nützlich für die Differenzierung der Daten ... Was ist die Struktur der Spalten nicht dargestellt oben? Sie sind alle einzigartig, oder machen die Kategorien A, B, C, X, Y, Z, ... wiederholen? - raw.Ausdruck der gleichen Daten.Alle Spalten sind einzigartig.Ich in der Regel verwendet den Regenbogen als es unterscheidet zwischen den einzelnen plots, aber wenn es eine bessere option für die Farben bitte schlagen Sie mich.Ich nehme log="y" so, dass es irgendeine Art von Einheitlichkeit entlang der y-Achse, die nützlich bei der Visualisierung der Daten in gut Weise.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin damit einverstanden, dass Sie haben, etwas zu tun, etwas drastischer zu unterscheiden, 400 Boxen im gleichen Diagramm. Der folgende code verwendet zwei tricks: (1) Umkehrung der üblichen x-y-Reihenfolge, so dass es einfacher ist, Lesen Sie die Etiketten (aufgetragen auf der y-Achse); (2) senden Sie die Ausgabe auf einem hohen, Dünn PDF-Datei, so dass Sie können Blättern Sie durch Sie in Ihrer Freizeit. Ich haben auch entschieden, Sie zum Sortieren der Variablen mit dem Mittelwert, um den plot leichter zu interpretieren-das wäre optional, aber ich vermute, Sie würde haben eine harte Zeit der Suche eine bestimmte Kategorie in einem 400-box-plot in jedem Fall ...
melt
! Wo warst du mein ganzes r-Leben?!reshape
- Paket (das ist eine Abhängigkeit vonggplot2
, so wird automatisch geladen)log="y"
stattlog="xy"
es sei denn, Sie haben einen guten Grund)Andere haben schon darauf hingewiesen, dass die tatsächlichen boxplots sind nicht gehen, um gut zu funktionieren. Allerdings gibt es ist ein sehr effizienter Weg, um visuell Scannen Sie alle Ihre Variablen: Einfach plot, Ihre Distributionen als Bild (d.h. heatmap). Hier ist ein Beispiel zeigt, wie es ist eigentlich ganz einfach zu erhalten den Kern von 400 Variablen und 80.000 einzelnen Daten Punkte!
Dies ist besonders nützlich, wenn alle Ihre Variablen vergleichbar sind, oder zumindest sortiert in rational-Gruppen.
hclust
und dieheatmap
Funktionen können auch hilfreich sein, hier für mehr kompliziert zeigt. Viel Glück!Wenn man bedenkt, dass Sie Plotten 400 Boxen in der box-plot, ich bin nicht überrascht, dass Sie Schwierigkeiten haben, Sie zu sehen. Angenommen, Sie haben einen monitor, der eine Breite von 1024 Pixeln. Ihre Anwendung wird nur in der Lage sein, um die Anzeige der Boxen, als zwei Pixel breit. Auch mit größeren Bildschirmen, die Sie nicht erhöhen Sie die Anzahl der Pixel, um viel (ein Bild mit 2000 Pixel wird bei den meisten zeigen Sie die Boxen, die sind 5 Pixel breit).
Ich würde vorschlagen, Plotten Sie Ihre Boxen auf zwei oder mehr getrennte Parzellen.