Matplotlib: cambiar el tamaño del marcador de diagrama de dispersión

En este tutorial, repasaremos ejemplos de cómo cambiar el tamaño del marcador de un individuo, así como todos los marcadores en un diagrama de dispersión de Matplotlib usando Python.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Gran parte de la popularidad de Matplotlib proviene de sus opciones de personalización: puede modificar casi cualquier elemento de su jerarquía de objetos.

En este tutorial, veremos cómo cambiar el tamaño del marcador en un diagrama de dispersión de Matplotlib.

Importar datos

Usaremos el conjunto de datos felicidad mundial y compararemos la Puntuación de felicidad con diferentes características para ver qué influye en la felicidad percibida en el mundo:

1
2
3
import pandas as pd

df = pd.read_csv('worldHappiness2019.csv')

Luego, podemos manipular fácilmente el tamaño de los marcadores utilizados para representar las entradas en este conjunto de datos.

Cambiar el tamaño del marcador en el diagrama de dispersión de Matplotlib

Comencemos trazando el puntaje de generosidad contra el PIB per cápita:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('worldHappiness2019.csv')

fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'])
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")

plt.show()

Esto resulta en:

matplotlib scatter plot

Ahora, digamos que nos gustaría aumentar el tamaño de cada marcador, en función de la felicidad percibida de los habitantes de ese país. El puntaje de felicidad es una lista, que proviene directamente de df, por lo que también puede funcionar con otras listas.

Para cambiar el tamaño de los marcadores, usamos el argumento s, para la función scatter(). Este será el argumento markersize para la función plot():

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('worldHappiness2019.csv')

fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = df['Score']*25)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")

plt.show()

También hemos multiplicado el valor de cada elemento de la lista por un número arbitrario de 25, porque están clasificados de 0..1. Esto producirá marcadores realmente pequeños si los usamos en sus valores originales.

Esto ahora resulta en:

matplotlib change scatter plot marker size

O mejor aún, en lugar de multiplicar toscamente todo por 25, ya que los valores son similares de todos modos, podemos hacer algo como esto:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('worldHappiness2019.csv')

size = df['Score'].to_numpy()
s = [3*s**2 for s in size]

fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = s)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")

plt.show()

Es importante que la lista s tenga la misma longitud que x e y, ya que ahora se les aplica cada valor de s. Si la lista es más corta o más larga, el código se romperá.

Aquí, extrajimos los valores de la columna Puntuación, los escalamos y aplicamos el tamaño nuevamente al gráfico de dispersión:

scaled marker size scatter plot matplotlib

Establecer el tamaño del marcador global en el diagrama de dispersión de Matplotlib

Si desea separar el tamaño del marcador de alguna variable, y simplemente desea establecer un tamaño global estándar de marcadores en el gráfico de dispersión, simplemente puede pasar un valor único para s:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('worldHappiness2019.csv')

fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = 100)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")

plt.show()

Esto ahora resulta en:

global marker size matplotlib scatter plot

Conclusión

En este tutorial, hemos repasado cómo cambiar el tamaño del marcador en un diagrama de dispersión de Matplotlib.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.