Najbardziej niedostatecznie wykorzystana wizualizacja danych [zamknięta]

Histogramy i wykresy to świetne metody wizualizacji danych i relacji między zmiennymi, ale ostatnio zastanawiałem się, jakich technik wizualizacji brakuje. Jaki jest według ciebie najbardziej niedouczony rodzaj działki?

Odpowiedzi powinny:

  1. Niezbyt często stosowany w praktyka.
  2. być zrozumiałe bez Wielkiej dyskusji w tle.
  3. być stosowane w wielu typowych sytuacjach.
  4. Dołącz powtarzalny kod aby stworzyć przykład (najlepiej w R). Połączony obraz byłby nieźle.
Author: Ian Fellows , 2010-01-16

15 answers

Naprawdę zgadzam się z innymi plakatami: Książki Tufte są fantastyczne i warte przeczytania.

Po Pierwsze, chciałbym wskazać bardzo ładny tutorial na ggplot2 i ggobi z "Patrząc na dane" na początku tego roku. Poza tym chciałbym po prostu wyróżnić jedną wizualizację z R I dwa pakiety graficzne (które nie są tak szeroko stosowane jak grafika podstawowa, krata lub ggplot): {]}

Mapy Ciepła

Bardzo lubię wizualizacje, które potrafią obsłużyć dane wielowymiarowe, zwłaszcza dane szeregów czasowych. mapy ciepła mogą być do tego przydatne. Jeden naprawdę fajny został zaprezentowany przez Davida Smitha na blogu Revolutions . Oto kod ggplot dzięki uprzejmości 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)

Co kończy się tak:

alt text

RGL: Interaktywna grafika 3D

Kolejnym pakietem, który warto się uczyć jest RGL, który z łatwością daje możliwość tworzenia interaktywna grafika 3D. Istnieje wiele przykładów w Internecie (w tym w dokumentacji rgl).

R-Wiki ma ładny przykład Jak wykreślić wykres 3D za pomocą RGL.

GGobi

Kolejnym pakietem, który warto znać jest rggobi . Istnieje Książka Springera na ten temat i wiele świetnych dokumentacji/przykładów online, w tym kurs "patrząc na dane".

 86
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 14:19:43

Wykresy wykorzystujące współrzędne biegunowe są z pewnością nieużywane -- niektórzy powiedzieliby, że nie bez powodu. Myślę, że sytuacje, które uzasadniają ich użycie nie są powszechne; myślę również, że gdy te sytuacje się pojawiają, polarne wykresy mogą ujawnić wzorce w danych, że wykresy liniowe nie mogą.

Myślę, że to dlatego, że czasami Twoje dane są z natury polarne, a nie liniowe-np. są cykliczne (współrzędne x reprezentujące czasy w ciągu 24-godzinnego dnia przez wiele dni), lub dane były wcześniej odwzorowane na przestrzeni biegunowej.

Oto przykład. Wykres ten pokazuje średnią ilość ruchu na stronie internetowej według godziny. Zwróć uwagę na dwa kolce o 22: 00 i o 1: 00. Dla inżynierów sieciowych Witryny są one znaczące; istotne jest również to, że występują blisko siebie (w odstępie zaledwie[8]}dwóch[9]} godzin). Ale jeśli wykreślisz te same dane na tradycyjnym układzie współrzędnych, ten wzór byłby całkowicie ukryty-wykreślony liniowo, te dwa kolce byłyby 20 godziny przerwy, które są, choć są one również tylko dwie godziny w kolejnych dniach. Wykres BIEGUNOWY powyżej pokazuje to w sposób parsymoniczny i intuicyjny (legenda nie jest konieczna).

Wykres BIEGUNOWY pokazujący ruch w witrynie, ze szczytami w godzinach 1 i 22

Istnieją dwa sposoby (o których wiem) tworzenia wykresów takich jak ten za pomocą R (stworzyłem wykres powyżej w/ r). Jednym z nich jest kodowanie własnych funkcji w systemach graficznych bazowych lub siatkowych. Innym sposobem, co jest łatwiejsze, jest użycie okrągłego pakietu . Funkcja, której chcesz użyć to "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)
 56
Author: doug,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 15:52:35

Bardzo lubię dotplots i kiedy polecam je innym za odpowiednie problemy z danymi, są niezmiennie zaskoczeni i zachwyceni. Nie wydają się zbytnio przydatne, i nie mogę zrozumieć dlaczego.

Oto przykład z Quick-R: dotplot na dane samochodu

Uważam, że Cleveland jest najbardziej odpowiedzialny za rozwój i rozpowszechnianie tych, A przykład w jego książce (w którym wadliwe dane zostały łatwo wykryte za pomocą kropki) jest potężnym argumentem za ich wykorzystaniem. Uwaga że powyższy przykład stawia tylko jedną kropkę na linię, podczas gdy ich prawdziwa moc pochodzi z Ty masz wiele kropek na każdej linii, z legendą wyjaśniającą, które jest które. Na przykład, można użyć różnych symboli lub kolorów dla trzech różnych punktów czasowych, a następnie łatwo uzyskać poczucie wzorców czasu w różnych kategoriach.

W poniższym przykładzie (wykonanym w Excelu wszystkich rzeczy!), możesz wyraźnie zobaczyć, która kategoria mogła ucierpieć z powodu wymiany etykiet.

Dotplot z 2 grupami

 53
Author: Ari B. Friedman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-29 11:48:54

Jeśli Wykres scatter ma tak wiele punktów, że staje się kompletnym bałaganem, spróbuj wygładzić Wykres scatter. Oto przykład:

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

Pakiet hexbin (sugerowany przez @ Dirk Eddelbuettel) jest używany w tym samym celu, ale smoothScatter() ma tę zaletę, że należy do pakietu graphics i dlatego jest częścią standardowej instalacji R.

Smiley jako zwykła lub wygładzona fabuła scatter

 52
Author: nullglob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-15 12:56:25

Jeśli chodzi o sparkline i inne pomysły Tufte, pakiet YaleToolkitna CRAN zawiera funkcje sparkline i sparklines.

Innym pakietem, który jest przydatny dla większych zbiorów danych jest hexbin , ponieważ sprytnie "przechowuje" dane w wiadrach, aby poradzić sobie z zestawami danych, które mogą być zbyt duże dla naiwnych plam rozpraszających.

 30
Author: Dirk Eddelbuettel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-16 17:30:50

Działki skrzypiec (które łączą działki skrzynkowe z gęstością jądra) są stosunkowo egzotyczne i całkiem fajne. Pakiet vioplot W R pozwala na łatwe ich wykonanie.

Oto przykład (link do Wikipedii również pokazuje przykład):

Tutaj wpisz opis obrazka

 27
Author: Jason Sundram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 03:22:43

Kolejną miłą wizualizacją serii czasowej, którą właśnie przeglądałem, jest "Wykres uderzeniowy" (jak opisano w ten post na blogu "Learning R" ). Jest to bardzo przydatne do wizualizacji zmian pozycji w czasie.

Możesz przeczytać o tym, jak go utworzyć na http://learnr.wordpress.com / , ale tak to wygląda:

alt text

 24
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 14:20:02

Podobają mi się też modyfikacje boxplotów Tufte ' a, które pozwalają na znacznie łatwiejsze porównywanie małych wielokrotności, ponieważ są one bardzo "cienkie" poziomo i nie zaśmiecają fabuły zbędnym tuszem. Jednak działa to najlepiej z dość dużą liczbą kategorii; jeśli masz tylko kilka na działce, zwykłe (Tukey) boxploty wyglądają lepiej, ponieważ mają trochę więcej heft do nich.

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

Inne sposoby ich wytwarzania (w tym inny rodzaj Tufte boxplot) to omówione w tym pytaniu .
 19
Author: Ari B. Friedman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:56

Wykresy horyzontalne (pdf), do wizualizacji wielu szeregów czasowych naraz.

Wykres współrzędnych równoległych (pdf), do analizy wielowymiarowej.

Asocjacja i wykresy mozaikowe do wizualizacji tabel interwencyjnych (patrz pakiet VCD)

 18
Author: Richie Cotton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-18 17:48:48

Nie powinniśmy zapominać o uroczej i (historycznie) ważnej fabule łodygi i liści (którą Tufte też uwielbia!). Otrzymasz bezpośrednio numeryczny przegląd gęstości i kształtu danych (oczywiście, jeśli zestaw danych nie jest większy niż o 200 punktów). W R, funkcja stem powoduje zwichnięcie łodygi i liści (w obszarze roboczym). Wolę użyć funkcji gstemz pakietu fmsb, aby narysować ją bezpośrednio w urządzeniu graficznym. Poniżej znajduje się wariancja temperatury ciała bobra (dane powinny być w domyślnej dataset) w wyświetlaczu stem-by-leaf:

  require(fmsb)
  gstem(beaver1$temp)

Tutaj wpisz opis obrazka

 17
Author: Geek On Acid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-21 00:03:02

Oprócz doskonałej pracy Tufte, polecam książki Williama S. Clevelanda: Wizualizacja danych i Elementy danych Wykresowych. Nie tylko są doskonałe, ale wszystkie zostały wykonane w R, i wierzę, że kod jest publicznie dostępny.

 15
Author: Peter Flom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-17 21:27:03

Boxplots! Przykład z pomocy R:

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

Moim zdaniem jest to najbardziej poręczny sposób na szybkie przyjrzenie się danym lub porównanie dystrybucji. Dla bardziej złożonych dystrybucji istnieje rozszerzenie o nazwie vioplot.

 14
Author: mbq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-21 22:39:07

Działki mozaiki wydają mi się spełniać wszystkie cztery wymienione kryteria. Są przykłady w r, pod mozaiką.

 11
Author: Peter Flom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-17 21:22:14

Zobacz prace Edwarda Tufte ' a, a szczególnie tę książkę

Możesz również spróbować złapać jego podróżniczą prezentację . Jest całkiem dobry i zawiera pakiet czterech jego książek. (przysięgam, że nie jestem właścicielem akcji jego wydawcy!)

Przy okazji, podoba mi się jego technika wizualizacji danych sparkline. Niespodzianka! Google już to napisało i umieściło na Google Code

 10
Author: Paul Sasik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-16 06:09:17

Streszczenie? Jak wspomniano na tej stronie:

Wizualizacja statystyk podsumowujących i niepewności

 1
Author: Gökhan Sever,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-28 23:28:43