46 votos

Cómo trazar las tendencias adecuadamente

Estoy creando un gráfico para mostrar las tendencias en las tasas de mortalidad (por 1000 ppl.) en diferentes países y la historia que debe venir de la trama es que Alemania (línea azul claro) es el único cuya tendencia va en aumento después de 1932. Este es mi primer nivel (básico) intentar

enter image description here

En mi opinión, este gráfico ya está mostrando lo que queremos decir, pero no es super intuitivo. ¿Tiene alguna sugerencia para hacer más clara la distinción entre las tendencias? Yo estaba pensando de planear el crecimiento de la tasa de interés, pero he intentado y no es que mejor.

Los datos son los siguientes

year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
1928    11.2    16.4    12.8    9.6     11      12      14.5    15.1    16.4
1929    11.4    17.9    14.4    10.7    11.2    12.5    14.6    15.5    16.7
1930    10.4    15.6    12.8    9.1     10.8    11.6    13.5    14.2    15.6
1931    10.4    16.2    12.7    9.6     11.4    12.1    14      14.4    15.5
1932    10.2    15.8    12.7    9       11      12.2    13.9    14.1    15
1933    10.8    15.8    12.7    8.8     10.6    11.4    13.2    13.7    14.2
1934    10.6    15.1    11.7    8.4     10.4    11.3    12.7    13.2    14.4
1935    11.4    15.7    12.3    8.7     11.1    12.1    13.7    13.5    14
1936    11.7    15.3    12.2    8.7     11      11.4    13.2    13.3    14.2
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14

53voto

erik Puntos 3923

A veces menos es más. Con menos detalles acerca de la año-a-año, las variaciones y el país distinciones puede proporcionar más información acerca de las tendencias. Debido a que los otros países se están moviendo en su mayoría juntos se puede obtener por separado, sin colores.

En el uso de una suave tienes que requieren que el lector la confianza de que no se alisa cualquier variación interesante.

enter image description here

40voto

Sean Hanley Puntos 2428

Hay buenas respuestas aquí. Déjame en tu palabra de que te quiero mostrar que la tendencia para Alemania difiere del resto. Los niveles de frente los cambios es común la distinción en la economía. Sus datos están en los niveles, pero su pregunta está indicada en busca de cambios. La manera de hacerlo es establecer el nivel de referencia (aquí 1932) como $1$. A partir de ahí, cada año sucesivo, es una fracción de la anterior. (Es común tomar troncos para hacer cambios más estable y simétrica. Esto hace cambiar el significado de los números exactos algo, si realmente quieres a alguien para conseguir que a partir de la trama, pero por lo general para este tipo de cosas, la gente quiere ser capaz de ver el patrón.) Usted, a continuación, obtener una suma de ejecución para cada serie y se multiplica por $100$ por convenio. Que es lo que trama. Su caso es un poco menos común en que su punto de referencia está en el medio de la serie, así que me encontré con esto en ambas direcciones a partir de 1932. A continuación se muestra un sencillo ejemplo, el código en R (habrá un montón de maneras de hacer que el código y el diagrama que mejor, pero esto debería mostrar la idea de principio a fin). He hecho la línea para Alemania más gruesa de distinguir en la leyenda, y he añadido una línea de referencia en $100$. Es fácil ver que Alemania se destaca del resto. También se puede ver que todos los otros países que terminan con las tasas más bajas en 1937 de 1932, y que su año por año de los cambios fluctuar mucho menos en los años después de 1932 que en los años precedentes.

d = read.table(text="
year     de     fr      be       nl     den      ch     aut     cz       pl
1927    10.9    16.5    13      10.2    11.6    12.4    15      16      17.3
...
1937    11.5    15      12.5    8.8     10.8    11.3    13.3    13.3    14",
header=T)

d2          = d  # we'll end up needing both
d2[6,2:10]  = 1  # set 1932 as 1
for(j in 2:10){   
  for(i in 7:11){
      # changes moving forward from 1932:
    d2[i,j] = log( d[i,j]/d[i-1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i,j]+d2[i-1,j]
  }
  for(i in 5:1){
      # changes moving backward from 1932:
    d2[i,j] = log( d[i,j]/d[i+1,j] )
      # running sum moving forward from 1932:
    d2[i,j] = d2[i+1,j]+d2[i,j]
  }
}
d2[,2:10]   = d2[,2:10]*100  # multiply all values by 100

windows()  # plot of changes
  plot(1,1, xlim=c(1927,1937), ylim=c(82,118), xlab="Year", 
       ylab="Change from 1932", main="European death rates")
  abline(h=100, col="lightgray")
  for(j in 2:10){
    lines(1927:1937, d2[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("bottomleft", legend=colnames(d2)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

windows()  # plot of levels
  plot(1,1, xlim=c(1927,1937), ylim=c(8,18.4), xlab="Year", 
       ylab="Deaths per thousand", main="European death rates")
  abline(h=d[6,2:10], col="gray90")
  points(rep(1932,9), d[6,2:10], col=rainbow(9), pch=16)
  for(j in 2:10){
    lines(1927:1937, d[,j], col=rainbow(9)[j-1], lwd=ifelse(j==2,2,1))
  }
  legend("topright", legend=colnames(d)[2:10], lwd=c(2,rep(1,8)), lty=1, 
         col=rainbow(9), ncol=2)

enter image description here

Por el contrario, por debajo de la correspondiente parcela de los datos en los niveles. Sin embargo, trató de hacer lo posible para ver que Alemania solo sube después de 1932 en dos formas: puedo poner un punto destacado en cada una de las series en 1932, y dibujó una tenue línea gris a través de la trama en el fondo a esos niveles.

enter image description here

18voto

Nick Cox Puntos 22819

Hay muchas buenas ideas aquí en otras respuestas, pero no se escape de las buenas soluciones que son posibles. Este gráfico lleva a que los diferentes niveles de la tasa de mortalidad puede ser discutido y explicado por separado. En lo que permite a cada serie para llenar la mayor parte del espacio disponible, se centra la atención del lector sobre los patrones de cambio.

Orden alfabético por país, generalmente un tonto por defecto, y no insistió en aquí. Fortuitamente, y afortunadamente, Alemania, de está en el centro de este 3 x 3 de la pantalla. Una narrativa simple -- ¡Mira! Alemania patrón es excepcional, con un repunte a partir de 1932 -- es posible y plausible.

enter image description here

Fortuitamente, pero, afortunadamente, 9 países son suficientes para justificar tratando de paneles separados, pero no demasiados para hacer que el diseño sea impracticable (con decir 30 y ciertamente 300 paneles, podría (podría) ser demasiados paneles para la exploración, con cada uno demasiado pequeño para examinar).

Evidentemente, hay un montón de espacio aquí para más completo de los nombres de países. (En algunas otras respuestas, leyendas de tomar una gran parte del espacio disponible, mientras que se queda un poco críptico. En la práctica, las personas interesadas en esos datos puedan encontrar en el país de las abreviaturas fácil de decodificar, pero hasta qué punto la leyenda que se necesita es a menudo un molesto problema en el diseño gráfico.)

Stata código para el registro:

clear
input int year double(de fr be nl den ch aut cz pl)
1927 10.9 16.5   13 10.2 11.6 12.4   15   16 17.3
1928 11.2 16.4 12.8  9.6   11   12 14.5 15.1 16.4
1929 11.4 17.9 14.4 10.7 11.2 12.5 14.6 15.5 16.7
1930 10.4 15.6 12.8  9.1 10.8 11.6 13.5 14.2 15.6
1931 10.4 16.2 12.7  9.6 11.4 12.1   14 14.4 15.5
1932 10.2 15.8 12.7    9   11 12.2 13.9 14.1   15
1933 10.8 15.8 12.7  8.8 10.6 11.4 13.2 13.7 14.2
1934 10.6 15.1 11.7  8.4 10.4 11.3 12.7 13.2 14.4
1935 11.4 15.7 12.3  8.7 11.1 12.1 13.7 13.5   14
1936 11.7 15.3 12.2  8.7   11 11.4 13.2 13.3 14.2
1937 11.5   15 12.5  8.8 10.8 11.3 13.3 13.3   14
end

rename (de-pl) (death=)
reshape long death, i(year) j(country) string
line death year, by(country, yrescale note("")) xtitle("") xla(1927(5)1937)

EDITAR:

Una simple mejora de este gráfico sugerido por Tim Morris es para resaltar el año en el que el máximo se produjo:

enter image description here

egen max = max(death) , by(country)
replace max = max == death
twoway line death year || scatter death year if max, ms(O)  ///
by(country, yrescale note("") legend(off)) xtitle("") xla(1927(5)1937)  

EDIT 2:

Este diseño muestra cada serie por separado, pero cada vez con la de otras series como telón de fondo. La idea general de lo que se discute dentro de esta relacionado con el hilo.

enter image description here

Hay pérdida de la ganancia de aquí. Mientras que cada una de las series más fácilmente puede ser visto en el contexto de los demás, el espacio que se pierde por la repetición.

Stata código para el registro (esto es más complicado, pero Stata los usuarios deben tomar nota de una inclinación de mi parte generalizar el código de un programa):

(Código input, reshape, rename como anteriormente en esta respuesta)

egen where = group(country), label 
gen long id = _n
expand 9
bysort id : gen group = _n
label val group where 
separate death, by(group == where)

local note "countries highlighted in turn"
set scheme s1color 
sort group country year 

twoway  line death0 year, lc(gs12) by(group, compact note("`note'") legend(off)) ///
subtitle(, fcolor(ltblue*0.5)) c(L) xtitle("") ///
ytitle("death rate, yearly deaths per 1000") yla(8(2)18, ang(h)) xla(1927(5)1937, format(%tyY)) ///
|| connected death1 year, lc(blue) mc(blue) ms(oh)

15voto

Aaron Puntos 36

Su gráfica es razonable, pero se requeriría de algún refinamiento, incluyendo un título, etiquetas del eje, y completar país de las etiquetas. Si su objetivo es destacar el hecho de que Alemania era el único país con un incremento en la tasa de mortalidad durante el período de observación, a continuación, una manera simple de hacer esto sería para resaltar esta línea en la trama, ya sea mediante el uso de una línea más gruesa, una línea diferente tipo, o la transparencia alfa. Usted también podría aumentar su tiempo-el gráfico de la serie con una barra gráfica muestra el cambio en la tasa de mortalidad a lo largo del tiempo, por lo que la complejidad de las series de tiempo de las líneas se reduce a una sola medida de cambio.

Aquí es cómo usted podría producir estas parcelas con ggplot en R:

library(tidyr);
library(dplyr);
library(ggplot2);

#Create data frame in wide format
DATA_WIDE <- data.frame(Year = 1927L:1937L,
                        DE   = c(10.9, 11.2, 11.4, 10.4, 10.4, 10.2, 10.8, 10.6, 11.4, 11.7, 11.5),
                        FR   = c(16.5, 16.4, 17.9, 15.6, 16.2, 15.8, 15.8, 15.1, 15.7, 15.3, 15.0),
                        BE   = c(13.0, 12.8, 14.4, 12.8, 12.7, 12.7, 12.7, 11.7, 12.3, 12.2, 12.5),
                        NL   = c(10.2,  9.6, 10.7,  9.1,  9.6,  9.0,  8.8,  8.4,  8.7,  8.7,  8.8),
                        DEN  = c(11.6, 11.0, 11.2, 10.8, 11.4, 11.0, 10.6, 10.4, 11.1, 11.0, 10.8),
                        CH   = c(12.4, 12.0, 12.5, 11.6, 12.1, 12.2, 11.4, 11.3, 12.1, 11.4, 11.3),
                        AUT  = c(15.0, 14.5, 14.6, 13.5, 14.0, 13.9, 13.2, 12.7, 13.7, 13.2, 13.3),
                        CZ   = c(16.0, 15.1, 15.5, 14.2, 14.4, 14.1, 13.7, 13.3, 13.5, 13.3, 13.3),
                        PL   = c(17.3, 16.4, 16.7, 15.6, 15.5, 15.0, 14.2, 14.4, 14.0, 14.2, 14.0));

#Convert data to long format
DATA_LONG <- DATA_WIDE %>% gather(Country, Measurement, DE:PL);

#Set line-types and sizes for plot
#Germany (DE) is the fifth country in the plot
LINETYPE <- c("dashed", "dashed", "dashed", "dashed", "solid", "dashed", "dashed", "dashed", "dashed");
SIZE     <- c(1, 1, 1, 1, 2, 1, 1, 1, 1);

#Create time-series plot
theme_set(theme_bw());
PLOT1 <- ggplot(DATA_LONG, aes(x = Year, y = Measurement, colour = Country)) + 
         geom_line(aes(size = Country, linetype = Country)) +
         scale_size_manual(values = SIZE) +
         scale_linetype_manual(values = LINETYPE) +
         scale_x_continuous(breaks = 1927:1937) +
         scale_y_continuous(limits = c(0, 20)) +
         labs(title = "Annual Time Series Plot: Death Rates over Time", 
              subtitle = "Only Germany (DE) trends upward from 1927-37") +
         xlab("Year") + ylab("Crude Death Rate\n(per 1,000 population)");


#Create new data frame for differences
DATA_DIFF <- data.frame(Country = c("DE", "FR", "BE", "NL", "DEN", "CH", "AUT", "CZ", "PL"),
                        Change  = as.numeric(DATA_WIDE[11, 2:10] - DATA_WIDE[1, 2:10]));

#Create bar plot
PLOT2 <- ggplot(DATA_DIFF, aes(x = reorder(Country, - Change), y = Change, colour = Country, fill = Country)) + 
         geom_bar(stat = "identity") +
         labs(title = "Bar  Plot: Change in Death Rates from 1927-37", 
              subtitle = "Only Germany (DE) shows an increase in death rate") +
         xlab(NULL) + ylab("Change in crude Death Rate\n(per 1,000 population)");

Esto lleva a las siguientes parcelas:

enter image description here enter image description here

Nota: soy consciente de que el OP pretende resaltar el cambio en la tasa de mortalidad desde el año 1932, cuando la tendencia en Alemania comenzó a subir. A mí esto me parece un poco como el cherry picking, y me parece dudosa cuando los intervalos de tiempo son elegidos para obtener una determinada tendencia. Por esta razón, he mirado en el intervalo largo de todo el rango de datos, que es una comparación diferente a la OP.

13voto

jldugger Puntos 7490

Aunque el objetivo declarado es para mostrar los cambios, al parecer, desea mostrar anual de la serie de tiempo por el país, también. Que sugiere que no es completamente rehacer el gráfico, pero sólo la modificación de la misma.

Ya que un cambio se refiere a lo que sucede a partir de un año al siguiente, usted podría considerar la posibilidad de representación de los cambios mediante símbolos gráficos que abarcan los años sucesivos, es decir, los segmentos de línea que conecta los puntos de datos en la trama.

Dado que el color es tan útil para distinguir los países, y de lo contrario, no es tan bueno en el que indica las variables cuantitativas, que nos deja con que esencialmente sólo otras dos características que pueden ser variados para indicar el cambio: el estilo y el grosor de los segmentos. Debido a que su tesis concierne a un cambio positivo, usted querrá asegurarse de segmentos de línea para los aumentos más importantes: sus estilos debe ser más continuo y deben ser más gruesos.

Finalmente, su tesis se refiere a los datos después de 1932. Queremos poner énfasis en los elementos de la gráfica en relación a los otros. Que se puede hacer por saturar el color.

Plot

Esta solución inmediatamente proporciona ideas que no eran evidentes en el original:

  • No hay ningún país que experimentó un incremento anual en las tasas de mortalidad para todos los años después de 1932. Cualquier país aparecería como una continua línea sólida, pero no hay tal línea de la actualidad.

  • Mucho del cambio debe ser atribuido a factores comunes a todos los países. Esto es evidente en las similitudes de estilo de línea y grosor dentro de columnas verticales. Por ejemplo, durante el período de 1934-35 las tasas de mortalidad se incrementó en casi todos los países, donde en 1933-34 se redujo en casi todos los países.

  • Alemania era inusual en experimentando un gran aumento en las tasas de mortalidad en 1932-33 y también un ligero aumento en 1935-36.

Estos sugieren la realización de un sólido de dos vías de exploración de cambio en la tasa de mortalidad versus país, tal vez por la mediana de la polaca, con el fin de penetrar más profundamente en la relación de rendimiento de los países Europeos durante este período.

Si desea enfatizar sólo la diferencia entre 1937 y 1932, una técnica similar puede ser usado para simbolizar las partes de las rutas de acceso entre esas fechas. Alemania se destacan:

Plot 2

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X