148 votos

Más infrautilizada visualización de datos

Histogramas y diagramas de dispersión son grandes métodos de visualización de datos y la relación entre las variables, pero hace poco me han estado preguntando acerca de lo que las técnicas de visualización que me falta. ¿Cuál crees que es el más infrautilizados tipo de trama?

Respuestas:

  1. No se utilizan con mucha frecuencia en la práctica.
  2. Ser comprensible sin un gran de la discusión de fondo.
  3. Ser aplicable en muchas situaciones comunes.
  4. Incluir reproducible código para crear un ejemplo (de preferencia en R). Una imagen vinculada sería agradable.

79voto

Shane Puntos 40885

Estoy muy de acuerdo con el resto de carteles: Tufte libros son fantásticos y bien vale la pena leer.

En primer lugar, yo diría que un muy buen tutorial sobre ggplot2 y ggobi de "ver Datos" a principios de este año. Más allá de que me gustaría destacar sólo una visualización de R, y dos paquetes de gráficos (que no son tan ampliamente utilizados como base de los gráficos, de celosía, o ggplot):

Mapas De Calor

Me gusta mucho visualizaciones que puede manejar multivariante de datos, especialmente datos de series de tiempo. Mapas de calor puede ser útil para esto. Uno realmente bueno uno fue presentado por David Smith sobre las Revoluciones blog. Aquí está la ggplot código cortesía 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)

Que termina buscando algo como esto:

alt text

RGL: Interactivo de Gráficos en 3D

Otro paquete que bien vale la pena el esfuerzo de aprender es RGL, que fácilmente se proporciona la capacidad para crear actividades interactivas de gráficos 3D. Hay muchos ejemplos en línea para esto (incluyendo en el rgl documentación).

El R-Wiki tiene un bonito ejemplo de cómo la trama 3D de los gráficos de dispersión utilizando rgl.

GGobi

Otro paquete que vale la pena conocer es rggobi. Hay un Springer libro sobre el tema, y un montón de grandes documentación y ejemplos en línea, incluyendo en el "Mirando los Datos" del curso.

52voto

doug Puntos 29567

Las parcelas con coordenadas polares son sin duda infrautilizadas-algunos dicen que con buena razón. Creo que las situaciones que justifiquen su uso no son comunes; también creo que cuando surgen esas situaciones, gráficos polares puede revelar patrones en los datos que tramas lineales no.

Creo que es porque a veces los datos es inherentemente polar en vez de lineal--por ejemplo, es cíclico (x-coordenadas que representan veces durante 24 horas al día durante varios días), o los datos fueron previamente asignada a un polar espacio de características.

He aquí un ejemplo. Este gráfico muestra un sitio Web significa que el volumen de tráfico por hora. Aviso a los dos picos a las 10 pm y a la 1 am. Para el Sitio de la red de ingenieros, esos son significativas; es también significativo que ocurren cerca de uno a otro (a sólo dos horas de diferencia). Pero si se hace una gráfica de los mismos datos en un tradicional sistema de coordenadas, este patrón sería completamente oculto--trazan de forma lineal, estos dos picos sería de 20 horas de diferencia, que son, pensaron que ellos también están a sólo dos horas de diferencia en días consecutivos. La polar gráfico de arriba muestra esto en un parsimonioso y de manera intuitiva (una leyenda no es necesario).

alt text

Hay dos formas (que yo sepa) para crear parcelas como este con R (i creó la trama por encima de w/ R). Uno es el código de su propia función en la base de cuadrícula o gráfico de sistemas. Que de otra manera, que es más fácil, es el uso de la circular paquete. La función que iba a utilizar es"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)

48voto

Ari B. Friedman Puntos 24940

Me gusta mucho dotplots y a encontrar cuando yo les recomiendo a los demás para que los datos apropiados de los problemas que siempre son sorprendidos y encantados. Ellos no parecen tener mucho uso, y no puedo entender por qué.

He aquí un ejemplo de Rápido-R: dotplot on car data

Creo que Cleveland es más responsable para el desarrollo y la promulgación de estas, y el ejemplo en su libro (en la que los datos fallidos se detecta fácilmente con un dotplot) es un poderoso argumento a favor de su uso. Tenga en cuenta que el ejemplo anterior sólo pone un punto por línea, mientras que su verdadero poder viene con que tiene varios puntos en cada línea, con una leyenda que explica cual es cual. Por ejemplo, usted podría utilizar diferentes símbolos o colores para tres diferentes puntos de tiempo, y de allí fácilmente hacerse una idea de los patrones de tiempo en las diferentes categorías.

En el siguiente ejemplo (hecho en Excel de todas las cosas!), se puede ver claramente la categoría a la que podría haber sufrido una etiqueta de intercambio.

Dotplot with 2 groups

43voto

nullglob Puntos 3257

Si su gráfico de dispersión tiene muchos puntos que se convierte en un completo desastre, pruebe con un alisado diagrama de dispersión. Aquí está un ejemplo:

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

La hexbin paquete (sugerido por @Dirk Eddelbuettel) se utiliza para el mismo propósito, pero smoothScatter() tiene la ventaja de que pertenece a la graphics del paquete, y es por tanto parte de la norma R de la instalación.

Smiley as a regular or smoothed scatter plot

27voto

Dirk Eddelbuettel Puntos 134700

Con respecto a minigráfico y otros Tufte idea, la YaleToolkit paquete en CRAN ofrece funciones sparkline y sparklines.

Otro paquete que es útil para grandes conjuntos de datos es hexbin , ya que hábilmente 'bins' los datos en segmentos para tratar con conjuntos de datos que pueden ser demasiado grandes para los diagramas de dispersión.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X