Gráfico de dispersión Altura vs Peso vs Género (color y forma según Género)
Siguiendo con la primer parte de este blog, vamos a realizar un gráfico de dispersión que nos permita visualizar tres variables: Altura, Peso, Género, las dos primeras en los ejes mientras que la tercera será el resultado de una combinación de forma y color
Usando qplot
Usando ggplot
> ggplot(data=datos, aes(Altura, Peso))+ + geom_point(aes(shape=Genero, colour=Genero,), size=2)+ + xlab("Altura(metros)")+ylab("Peso(libras)")
Si se mira con detenimiento el gráfico, notaremos que hay varios puntos que se superponen, para arreglar este problema se utilizan símbolos con transparencias, veamos una introducción a ello.
Gráfico de dispersión añadiendo transparencias
Ahora vamos a explorar otra carácterística estética útil al crear gráficos estadísticos, la transparencia de las formas geométricas mostradas (puntos en los gráficos de dispersión).
Transparencias para datos superpuestos
Cuando se trabaja con grandes volúmenes de datos, al hacer un gráfico de dispersión corremos el riesgo de que las observaciones se superpongan, dandonos así una falsa imagen de lo que ocurre en la realidad, por ejemplo, supongamos que tenemos las siguientes 4 observaciones de peso y altura:
Altura Peso
1.50 105
1.60 120
1.60 120
1.60 120
Si se realiza un gráfico de dispersión con estos datos en el mismo se tendrá sólo dos puntos, puesto que las 3 últimas observaciones presentan los mismos valores; para resolver este problema una de las alternativas es utilizar transparencias, la idea es que los datos superpuestos se vean más oscuros que los simples. Suponga que para graficar el ejemplo planteado utilizamos una transparencia de 1/3 (alpha=1/3 o alpha=0.333), esto significa que tendremos tres niveles de tonalidad, de tal manera que cuando un datos no se superpone a otro, lo veremos el punto en un tono claro, cuando dos datos se superpongan el punto se visualizará más oscuro (en teoría el doble de oscuro que el anterior), si tres o más datos se superponen entre si, ese punto será visualizado como el más oscuro en el gráfico, nótese que tener alpha=1/3 sólo nos permite detectar hasta 3 puntos superpuestos.
Siguiendo el ejemplo, con alpha=1/3 se obtiene un gráfico con el punto correspondiente a la primer observacion de tono claro, mientras que el correspondiente a las otras 3 observaciones será un tono oscuro indicando que ahí tenemos elementos superpuestos. Entendida la idea de las tranparencias, se va a aplicar este concepto siguiendo con los datos con los que trabajamos en la primer parte del blog, si bien no es una base amplia (100 observaciones), veremos si hay elementos superpuestos o no, para ello vamos a aplicar una transparencia de 1/5 mediante el comando alpha=I(1/5), la codificación y el gráfico resultante se presenta a continuación:
Usando qplot
> qplot(Altura, Peso, data=datos, alpha=I(1/5), + xlab="Altura(metros)", ylab="Peso(libras)")
Usando ggplot
Note que la idea de definir transparencia de 0.2 (alpha=1/5) es porque nos permite detectar hasta cuando hay 5 observaciones superpuestas, pero este no parece ser el caso, es visible que los puntos más oscuros parecen indicar que no hay más de dos observaciones superpuestas, entonces podemos cambiar el código para obtener lo siguiente:
Usando qplot
> qplot(Altura, Peso, data=datos, alpha=I(1/2), + xlab="Altura(metros)", ylab="Peso(libras)")
Usando ggplot
Lo interesante es que pueden seguir jugando con los valores de alpha hasta conseguir lo que prefieren.
Transparencias según una tercer variable numérica Gráfico de dispersión Altura vs Peso vs Edad (transparencia según Edad)
Es posible que en se desee visualizar la interacción de tres variables numéricas, una forma de hacerlo es que la tonalidad del punto graficado dependa de la tercer variable, esta es una solución parcial puesto que los puntos superpuestos se verán más oscuros haciéndonos pensar que corresponden a una observación con valores elevados en la variable que asigna el tono y no a varias observaciones con valores medianos o pequeños, es decir, nuevamente no nos permiten ver la realidad.
Recordemos que los datos que estamos utilizando incluyen la variable Edad que es numérica, si se quisiera explorar la interacción de la Altura y Peso en conjunto con la edad entonces para hacer que la tonalidad dependa de la edad, se utiliza el siguiente código:
Usando qplot
> qplot(Altura,Peso,data=datos, alpha=Edad, + xlab="Altura(metros)", ylab="Peso(libras)")
Usando ggplot
> ggplot(data=datos,aes(Altura,Peso))+ + geom_point(aes(alpha=Edad))+ + xlab("Altura(metros)")+ylab("Peso(libras)")
Note como el paquete ggplot2 automáticamente genera intervalos para la variable Edad, y según estos intervalos utiliza la transparencia adecuada.
La lectura del gráfico es obvia, se puede ver que las observaciones que presentan menor Altura y Peso corresponden a las observaciones de menor Edad, osea, a los niños (como era de esperarse); luego se puede ver que la edad no influye en el Peso y Altura…
Este ejemplo sencillo (incluso con resultado obvio) sirve como ilustración del uso de transparencias asociadas a una variable; ahora nos resta aplicar transparencia al gráfico que generamos al inicio del post, lo cual haremos en la próxima entrada.
2 pings
Designauts…
[…]Creando un gráfico de Dispersión con ggplot2 (Scatterplot) Parte 2 .- Usando Transparencias « Blog de Néstor Montaño[…]…
[…] Simple, Gráfico de dispersión visualizando una tercer variable con el color o forma 4.- Creando un gráfico de Dispersión con ggplot2 (Scatterplot) Parte 1.- Gráfico de dispersión para tres variables, visualizando la tercer variable combinando color y […]