ComenzarEmpieza gratis

Anotaciones con flechas

Imagina que eres planificador urbano de Long Beach, California. Long Beach está en el Océano Pacífico y celebra un gran espectáculo de fuegos artificiales cada Nochevieja. Quieres comprobar si este espectáculo afecta negativamente a la calidad del aire de la ciudad. Para ello, vas a observar los niveles de CO y NO2 el día de Año Nuevo. Sin embargo, resulta que el día de Año Nuevo no es uno de los valores atípicos en el gráfico de la derecha, sino que está en una de las zonas más concurridas.

Para guiar a quien lo vea hasta ese punto, usarás una anotación con una flecha que señale el valor del día de Año Nuevo. Así aportarás una anotación clara que explica qué está viendo la persona, mientras sitúas el texto en una región menos saturada del gráfico.

Este ejercicio forma parte del curso

Mejora tus visualizaciones de datos en Python

Ver curso

Instrucciones del ejercicio

  • Obtén la fila de jan_pollution que corresponde al día de Año Nuevo de 2012 en la ciudad de Long Beach usando el método .query() de pandas.
  • Define el extremo de la flecha (xy) usando los valores de las columnas CO y NO2 del DataFrame lb_newyears.
  • Usa el argumento xytext para colocar el texto de la flecha de anotación en la esquina inferior izquierda de la visualización, en x = 2, y = 15.
  • "shrink" la flecha a 0.03, para que no oculte el punto de interés.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Query and filter to New Years in Long Beach
jan_pollution = pollution.query("(month  ==  1) & (year  ==  2012)")
lb_newyears = jan_pollution.query("(____  ==  ____) & (____  ==  '____')")

sns.scatterplot(x = 'CO', y = 'NO2',
                data = jan_pollution)

# Point arrow to lb_newyears & place text in lower left 
plt.annotate('Long Beach New Years',
             xy = (____, ____),
             xytext = (____, _____), 
             # Shrink the arrow to avoid occlusion
             arrowprops = {'facecolor':'gray', 'width': 3, '____': ____},
             backgroundcolor = 'white')
plt.show()
Editar y ejecutar código