Frage

Histogramme und Streudiagramme sind große Methoden der Daten und die Beziehung zwischen Variablen zu visualisieren, aber in letzter Zeit habe ich mich gefragt, was Visualisierungstechniken ich vermisst. Was denken Sie, ist die am wenigsten genutzte Art von Handlung?

Die Antworten sollten:

  1. Nicht sehr werden häufig verwendet in Praxis.
  2. verständlich sein, ohne große die Hintergrunddiskussion.
  3. Be anwendbar in vielen alltäglichen Situationen.
  4. Fügen Sie reproduzierbaren Code zu erstellen ein Beispiel (vorzugsweise in R). Ein verknüpftes Bild wäre schön.
War es hilfreich?

Lösung

Ich bin damit einverstanden wirklich mit den anderen Plakaten: Tuftes Bücher sind fantastisch und lesenswerte.

Zuerst möchte ich Dich auf einem Punkt sehr nettes Tutorial auf ggplot2 und ggobi von „Mit Blick auf Daten“ zu Beginn dieses Jahres. Darüber hinaus würde ich markiere nur eine Visualisierung von R und zwei Grafikpakete (die nicht so weit wie Basis Grafiken verwendet, Gitter oder ggplot):

Heat Maps

Ich mag Visualisierungen, die multivariate Daten verarbeiten kann, insbesondere Zeitreihendaten. Heatmaps kann dies nützlich sein. Ein wirklich nett man wurde von David Smith auf den Revolutionen Blog . Hier ist die ggplot Code mit freundlicher Genehmigung von Hadley:

stock <- "MSFT"
start.date <- "2006-01-12"
end.date <- Sys.Date()
quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
                stock, "&a=", substr(start.date,6,7),
                "&b=", substr(start.date, 9, 10),
                "&c=", substr(start.date, 1,4), 
                "&d=", substr(end.date,6,7),
                "&e=", substr(end.date, 9, 10),
                "&f=", substr(end.date, 1,4),
                "&g=d&ignore=.csv", sep="")    
stock.data <- read.csv(quote, as.is=TRUE)
stock.data <- transform(stock.data,
  week = as.POSIXlt(Date)$yday %/% 7 + 1,
  wday = as.POSIXlt(Date)$wday,
  year = as.POSIXlt(Date)$year + 1900)

library(ggplot2)
ggplot(stock.data, aes(week, wday, fill = Adj.Close)) + 
  geom_tile(colour = "white") + 
  scale_fill_gradientn(colours = c("#D61818","#FFAE63","#FFFFBD","#B5E384")) + 
  facet_wrap(~ year, ncol = 1)

Welche etwas wie folgt aussehen endet:

alt text

RGL: Interaktive 3D-Grafiken

Ein weiteres Paket, das lohnt sich die Mühe zu lernen, ist RGL , die leicht bietet die Möglichkeit, interaktive 3D-Grafiken zu erstellen. Es gibt viele Beispiele online diese (auch in der rgl Dokumentation).

Das R-Wiki hat ein schönes Beispiel , wie 3D-Streudiagramme mit rgl plotten.

ggobi

Ein weiteres Paket, das wert ist, zu wissen, ist rggobi . Es gibt ein Springer Buch über das Thema , und viele tolle Dokumentation / Beispiele online, bei der mit < a href = "http://lookingatdata.com/jsm-2009/" rel = "noreferrer"> "Mit Blick auf Daten" Kurs.

Andere Tipps

Ich mag Dotplots und finden, wenn ich sie an andere geeignete Datenprobleme empfehlen sie sind immer überrascht und erfreut. Sie scheinen nicht viel Gebrauch zu bekommen, und ich kann nicht herausfinden, warum.

Hier ist ein Beispiel von Schnell-R: Dotplot auf Kabinendaten

Ich glaube, Cleveland ist die größte Verantwortung für die Entwicklung und die Verkündung von ihnen, und das Beispiel in seinem Buch (in denen fehlerhafte Daten leicht mit einem Dotplot erkannt wurde) ist ein starkes Argument für ihre Verwendung. Beachten Sie, dass das obige Beispiel nur puts eine pro Zeile Punkt, während ihre wirkliche Macht kommt mit Ihnen mehrere Punkte auf einer Linie haben, mit einer Legende zu erklären, das was ist. Zum Beispiel könnten Sie verschiedene Symbole oder Farben für drei verschiedene Zeitpunkte verwenden, und von da leicht ein Gefühl von Zeitmuster in verschiedenen Kategorien.

Im folgende Beispiel (done in Excel alle Dinge!), Sie klar, welche Kategorie sehen könnte von einem Etikett Swap gelitten hat.

Dotplot mit 2 Gruppen

Plots Polarkoordinaten sind sicherlich zu wenig genutzt - manche würden sagen das mit gutem Grund. Ich denke, die Situationen, die ihre Anwendung rechtfertigen sind nicht üblich; Ich denke auch, dass, wenn diese Situationen entstehen, Polardiagramme Muster in Daten offenbaren, dass lineare Plots nicht.

Ich denke, das ist, weil manchmal Ihre Daten von Natur aus polar und nicht linear - zB ist es zyklisch (x-Koordinaten mal während 24-Stunden-Tag über mehrere Tage darstellt), oder die Daten waren zuvor kartierten auf einem polaren Merkmalsraum.

Hier ist ein Beispiel. Dieses Diagramm zeigt eine mittlere Verkehrsaufkommen der Webseite von Stunde. Beachten Sie die beiden Spitzen um 10 Uhr und um 01.00 Uhr. Für die Netzwerk-Ingenieure Standort, sind die signifikant; es ist auch von Bedeutung, dass sie in der Nähe von ihnen andere (nur zwei Stunden auseinander) auftreten. Aber wenn Sie die gleichen Daten auf einem herkömmlichen Koordinatensystem zeichnen, würde dieses Muster vollständig verdeckt werden - aufgetragen linear, wobei diese beiden Spitzen wären 20 Stunden auseinander, was sie sind, wenn sie auch nur zwei Stunden auseinander liegen an aufeinander folgenden Tagen. Die polare Grafik oben zeigt diese in einer parsimonious und intuitive Art und Weise (eine Legende ist nicht notwendig).

Polardiagramm Site-Traffic zeigt, mit Spitzenwerten bei den Stunden 1 und 22

Es gibt zwei Möglichkeiten (die ich kenne) Plots wie diese unter Verwendung von R zu erstellen (habe ich die Handlung oben w / R). Eine davon ist, um Code eine eigene Funktion in entweder die Basis oder Gittergrafiksysteme. Sie andere Art und Weise, was einfacher ist, ist das Kreis Paket verwenden . Die Funktion, die Sie verwenden würden, ist ' rose.diag ':

data = c(35, 78, 34, 25, 21, 17, 22, 19, 25, 18, 25, 21, 16, 20, 26, 
                 19, 24, 18, 23, 25, 24, 25, 71, 27)
three_palettes = c(brewer.pal(12, "Set3"), brewer.pal(8, "Accent"), 
                   brewer.pal(9, "Set1"))
rose.diag(data, bins=24, main="Daily Site Traffic by Hour", col=three_palettes)

Wenn Ihr Streudiagramm so viele Punkte hat, dass es ein komplettes Chaos wird, versuchen Sie eine geglättete Streudiagramm. Hier ein Beispiel:

library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot

Das hexbin Paket (vorgeschlagen von @Dirk Eddelbuettel) wird für den gleichen Zweck verwendet, aber smoothScatter() hat den Vorteil, dass es mit dem graphics Paket gehört, und ist somit Teil der Standard-R-Installation.

Smiley als Haupt- oder geglätteten Streudiagramm

In Bezug auf Sparkline und andere Tufte Idee, das YaleToolkit Paket auf CRAN bietet Funktionen sparkline und sparklines.

Ein weiteres Paket, das für größere Datensätze nützlich ist, ist hexbin wie es klug ‚Bins‘ Daten in Eimer mit Datensatz zu befassen, das für naiven Scatterplots zu groß sein kann.

Violin Plots (die Box-Plots mit Kerndichte kombinieren) sind relativ exotische und ziemlich cool. Die vioplot Paket in R können Sie sie ziemlich leicht machen.

Hier ist ein Beispiel (Der Wikipedia-Link zeigt auch ein Beispiel):

eingeben Bild Beschreibung hier

Eine weitere schöne Zeitreihen Visualisierung, dass ich gerade war die Überprüfung der „bump chart“ (wie gekennzeichnet in diesen Beitrag auf dem "Learning R" Blog ) . Dies ist sehr nützlich für Änderungen in der Position im Laufe der Zeit sichtbar zu machen.

Sie können lesen, wie es zu erstellen, die auf http://learnr.wordpress.com/ , aber das ist, was es am Ende aussehen wie:

alt text

Ich mag auch Tuftes Modifikationen von Boxplots mit denen Sie kleinem Multiples Vergleich viel mehr tun, einfach weil sie sehr „dünn“ sind horizontal und verunstalten nicht das Grundstück mit redundanter Tinte. Allerdings funktioniert es am besten mit einer ziemlich großen Anzahl von Kategorien; wenn Sie nur ein paar auf einem Grundstück des reguläre (Tukey) Boxplots besser aussehen haben, da sie ein bisschen mehr Gewicht zu ihnen haben.

library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick, 
  data.frame=cw , 
  main = "Chick Weights",
  box.show.mean=FALSE,
  box.show.whiskers=FALSE,
  box.show.box=FALSE
  )

compareplot

Weitere Möglichkeiten, diese zu machen (einschließlich der anderen Art von Tufte boxplot) sind in dieser Frage diskutiert.

Horizon Graphen (pdf), für sofort viele Zeitreihen zu visualisieren.

Parallele Koordinaten Plots (pdf), für multivariate Analyse.

Vereinigung und Mosaik Plots, für Kontingenztafeln Visualisierung (siehe vcd Paket)

Wir sollten nicht über nette und (historisch) wichtige Stamm-Blatt-Diagramm vergessen (das Tufte liebt auch!). Sie erhalten eine direkt numerische Übersicht über Sie Datendichte und Form (natürlich, wenn Ihr Datensatz dann über 200 Punkte nicht größer ist). In R erzeugt die Funktion stem Ihr Stamm-und-Blatt dislay (in Arbeitsbereich). Ich ziehe es gstem Funktion von Paket FMSB zu verwenden, um es direkt zu zeichnen in einer grafischen Gerät. Im Folgenden finden Sie ein Biber Körpertemperatur Varianz in einem Stamm-für-Blatt-Display (Daten in Ihrem Standard-Datensatz sein sollen):

  require(fmsb)
  gstem(beaver1$temp)

eingeben Bild Beschreibung hier

Neben Tuftes hervorragende Arbeit, ich die Bücher von William S. Cleveland empfehlen: Visualizing Daten und Elemente Grafische Darstellung von Daten . Sie sind nicht nur ausgezeichnet, aber sie waren alle in R getan, und ich glaube, dass der Code öffentlich verfügbar ist.

Boxplots! Beispiel aus der R-Hilfe:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

Meiner Meinung nach ist es die praktische Möglichkeit, einen kurzen Blick auf den Daten zu nehmen oder Verteilungen zu vergleichen. Für komplexere Verteilungen gibt es eine Erweiterung namens vioplot.

Mosaikplot scheinen mir alle vier genannten Kriterien zu erfüllen. Es gibt Beispiele in r, unter Mosaikplot.

Überprüfen Edward Tufte Arbeit und vor allem dieses Buch

Sie können auch versuchen und fangen seine Reise Präsentation . Es ist ziemlich gut und enthält ein Bündel von vier seiner Bücher. (Ich schwöre, ich besitze nicht seinen Verleger Lager!)

By the way, ich mag seine Sparkdatenvisualisierungstechnik. Überraschung! Google ist bereits geschrieben und es löschte auf Google Code

Zusammenfassung Plots? Wie in dieser Seite erwähnt:

Visualizing Zusammenfassung Statistiken und Unsicherheit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top