182 votes

Visualisation de données plus sous-utilisés

Les histogrammes et les nuages de points sont grandes méthodes de visualisation des données et de la relation entre les variables, mais récemment, j'ai été de s'interroger sur ce que les techniques de visualisation, je suis absent. Que pensez-vous est la plus sous-utilisée, le type de terrain?

Réponses:

  1. De ne pas être très couramment utilisés dans les de pratique.
  2. Être compréhensible sans une grande de débat de fond.
  3. Être applicable dans de nombreuses situations courantes.
  4. Inclure reproductible code pour créer un exemple (de préférence dans R). Une image liée serait nice.

91voto

Shane Points 40885

J'ai vraiment d'accord avec les autres affiches: Ses livres sont fantastiques et agréable à lire.

Tout d'abord, je voudrais vous à un très bon tutoriel sur ggplot2 et ggobi de "en Regardant les Données" plus tôt cette année. Au-delà de que je voudrais juste souligner une visualisation de R, et deux logiciels graphiques (qui ne sont pas aussi largement utilisé comme la base de graphiques, de treillis, ou ggplot):

Les Cartes Thermiques

J'aime vraiment les visualisations qui peut gérer multivariée des données, notamment des données de séries chronologiques. Les cartes thermiques peuvent être utiles pour cela. Vraiment intéressant a été présenté par David Smith sur les Révolutions blog. Voici la ggplot code de courtoisie de 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)

Qui finit par trouver, un peu comme ceci:

alt text

RGL: Interactive 3D Graphiques

Un paquet qui le vaut bien l'effort d'apprendre est RGL, qui offre la possibilité de créer des graphiques 3D. Il existe de nombreux exemples en ligne pour le présent (y compris dans la rgl documentation).

Le R-Wiki a un bel exemple de comment tracer des nuages de points 3D à l'aide de rgl.

GGobi

Un autre paquet qui vaut le détour est rggobi. Il y a un Springer livre sur le sujet, et beaucoup de documentation/exemples en ligne, y compris sur le "Regardant"Données de parcours.

59voto

Ari B. Friedman Points 24940

J'aime vraiment dotplots et trouver quand je les recommander à d'autres pour les données des problèmes, ils sont toujours surpris et ravi. Ils ne semblent pas obtenir beaucoup d'utilisation, et je ne peux pas comprendre pourquoi.

Voici un exemple de Rapide-R: dotplot on car data

Je crois que Cleveland est le plus responsable de l'élaboration et de la promulgation du présent, et l'exemple dans son livre (dans lequel défectueuse des données a été facilement détectée avec un dotplot) est un puissant argument en faveur de leur utilisation. Notez que l'exemple ci-dessus met un point par ligne, alors que leur puissance réelle est livré avec plusieurs points de chaque ligne, avec une légende expliquant qui est qui. Par exemple, vous pouvez utiliser différents symboles ou des couleurs pour les trois différents points dans le temps, et de là facilement se faire une idée des modèles de temps dans les différentes catégories.

Dans l'exemple suivant (qui se fait dans Excel de toutes les choses!), vous pouvez clairement voir quelle catégorie peut avoir souffert d'une étiquette de swap.

Dotplot with 2 groups

56voto

doug Points 29567

Parcelles à l'aide des coordonnées polaires sont certainement sous-utilisés--certains diront avec raison. Je pense que les situations qui justifient leur utilisation ne sont pas communs; je pense aussi que lorsque ces situations se présentent, polaires, les parcelles peuvent révéler des modèles dans les données que les tracés linéaires ne peuvent pas.

Je pense que c'est parce que parfois, vos données sont intrinsèquement polaire plutôt que linéaire--par exemple, il est cyclique (x-coordonnées représentant de fois pendant la journée de 24 heures sur plusieurs jours), ou les données ont été préalablement localisées sur une polaire fonctionnalité de l'espace.

Voici un exemple. Cette courbe montre un Site web est-à-dire que le volume de trafic par heure. Remarquez les deux pointes à 10 h et à 1 heure du matin. Pour le Site du réseau des ingénieurs, ceux-ci sont importants; il est également important qu'ils se produire à proximité les uns des autres (à seulement deux heures d'intervalle). Mais si vous tracez les mêmes données dans un traditionnel système de coordonnées, ce modèle serait complètement dissimulé, tracé linéaire, ces deux pics serait de 20 heures d'intervalle, qui ils sont, qu'ils sont également à seulement deux heures d'intervalle sur plusieurs jours consécutifs. Le polar graphique ci-dessus montre cela dans une parcimonieuse et de manière intuitive (une légende n'est pas nécessaire).

alt text

Il y a deux façons (que je connais) pour créer des parcelles comme ceci en utilisant la R (j'ai créé le graphique ci-dessus w/ R). L'une consiste à coder votre propre fonction dans la base ou de la grille graphique de systèmes. Ils autre moyen, plus simple, est d'utiliser la circulaire du package. La fonction que vous utilisez est la"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)

55voto

nullglob Points 3257

Si votre nuage de points a de nombreux points qu'il devient un désordre complet, essayez un lissé nuage de points. Voici un exemple:

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

L' hexbin package (suggéré par @Dirk Eddelbuettel) est utilisé pour le même but, mais smoothScatter() a l'avantage qu'il appartient à l' graphics paquet, et fait donc partie de la norme R de l'installation.

Smiley as a regular or smoothed scatter plot

31voto

Dirk Eddelbuettel Points 134700

Concernant sparkline et d'autres Tufte idée, le YaleToolkit paquet sur CRAN fournit des fonctions sparkline et sparklines.

Un autre paquet qui est utile pour les grands ensembles de données est hexbin comme intelligemment 'poubelles' données dans des compartiments de traiter des ensembles de données qui peut être trop grand pour les nuages de points.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X