Advanced Plotting with Matplotlib and Seaborn
Desliza para mostrar el menú
Al trabajar con datos espaciales, la visualización efectiva es fundamental para descubrir patrones y comunicar hallazgos. Las bibliotecas matplotlib y seaborn de Python ofrecen herramientas potentes para mejorar tus gráficos espaciales, permitiendo personalizar colores, añadir leyendas informativas, establecer títulos descriptivos y superponer múltiples capas de datos. Al dominar estas técnicas, puedes crear mapas y visualizaciones claros y atractivos que resaltan relaciones espaciales importantes.
La personalización de gráficos espaciales suele comenzar controlando la apariencia de los datos. Puedes especificar colores para representar diferentes categorías o valores, ajustar la transparencia para mostrar características superpuestas y utilizar leyendas para explicar tus codificaciones visuales. Añadir títulos y etiquetas a los ejes ayuda a los espectadores a interpretar rápidamente los gráficos. Superponer varias capas—como carreteras sobre límites administrativos—puede aportar un contexto más profundo a tu análisis espacial.
12345678910111213141516171819202122232425262728293031323334import geopandas as gpd import matplotlib.pyplot as plt url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip" world = gpd.read_file(url) # Create a plot with customizations fig, ax = plt.subplots(figsize=(12, 8)) # Plot countries, coloring by continent world.plot(column='CONTINENT', cmap='Set2', edgecolor='black', linewidth=0.5, legend=True, ax=ax, alpha=0.8) # Overlay country boundaries with a thicker line for emphasis world.boundary.plot(ax=ax, color='gray', linewidth=1.5) # Add a title and axis labels ax.set_title('World Countries by Continent', fontsize=18) ax.set_xlabel('Longitude') ax.set_ylabel('Latitude') # Customize legend position so it doesn't overlap the map leg = ax.get_legend() if leg: leg.set_bbox_to_anchor((1.15, 0.5)) plt.tight_layout() plt.show()
El nombre de la columna en el conjunto de datos oficial es CONTINENT
Más allá de las visualizaciones basadas en mapas, también puedes explorar la distribución de atributos espaciales —como área, población o densidad— utilizando gráficos estadísticos. Seaborn es especialmente útil para este propósito, ya que permite crear histogramas, gráficos de dispersión y más, todo con estilos predeterminados atractivos y fácil personalización. Al combinar seaborn con datos espaciales, puedes identificar rápidamente tendencias y valores atípicos en tus conjuntos de datos, lo que facilita un análisis espacial más profundo.
1234567891011121314151617181920212223242526272829303132import geopandas as gpd import seaborn as sns import matplotlib.pyplot as plt # Load sample data directly from the official URL url = "https://naciscdn.org/naturalearth/110m/cultural/ne_110m_admin_0_countries.zip" world = gpd.read_file(url) # The official dataset doesn't have a pre-made 'area' column, so we calculate it. # Note: This calculates area in decimal degrees based on the WGS84 projection. world['area'] = world.geometry.area # Plot a histogram of country areas plt.figure(figsize=(10, 6)) # 'area' is our new custom column, kde=True adds the density curve sns.histplot(world['area'], bins=30, color='skyblue', kde=True) plt.title('Distribution of Country Areas') plt.xlabel('Area (sq. degrees)') plt.ylabel('Number of Countries') plt.tight_layout() plt.show() # Plot a scatter plot of population vs. area plt.figure(figsize=(10, 6)) # Adjusted column names to match the official dataset: 'POP_EST' and 'CONTINENT' sns.scatterplot(x='area', y='POP_EST', data=world, hue='CONTINENT', palette='Set2') plt.title('Country Population vs. Area by Continent') plt.xlabel('Area (sq. degrees)') plt.ylabel('Estimated Population') plt.legend(title='Continent', bbox_to_anchor=(1.05, 1), loc='upper left') plt.tight_layout() plt.show()
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla