Gridspec de gráficos de contorno polar.
He utilizado las respuestas a esta pregunta (https://stackoverflow.com/questions/22416965/adding-a-colorbar-to-a-polar-contourf-multiplot) para generar los dos gráficos de contorno polar que aparecen uno al lado del otro. Puedo extender la cuadrícula a una cuadrícula de 2 por 2 de gráficos de contorno polar simplemente editando la respuesta al post anterior para que rastrees las posiciones de la cuadrícula:
fig, axs = plt.subplots(2, 2, figsize=(12,5),subplot_kw=dict(projection=’polar’))
p1 = axs[0,0].contourf(theta, r, Z1, 100)
p2 = axs[0,1].contourf(theta, r, Z2, 100)
p3 = axs[1,0].contourf(theta, r, Z2, 100)
p4 = axs[1,1].contourf(theta, r, Z2, 100)
Esto genera la siguiente imagen:
El espaciado entre cada gráfico es claramente un problema. ¿Cómo puedo editar el espaciado tanto en la dirección horizontal como en la vertical y escalar cada gráfico polar para hacerlos ligeramente más grandes?
MWE
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import matplotlib.colors as colors
from matplotlib import gridspec#, ticker
X = np.arange(0, 70, 10)
Y = np.radians(np.linspace(0, 360, 20))
r, theta = np.meshgrid(X,Y)
Z1 = np.random.random((azimuths.size, zeniths.size))
Z2 = np.random.random((azimuths.size, zeniths.size))
Z3 = np.random.random((azimuths.size, zeniths.size))
Z4 = np.random.random((azimuths.size, zeniths.size))
fig, axs = plt.subplots(2, 2, figsize=(12,5),subplot_kw=dict(projection=’polar’))
p1 = axs[0,0].contourf(theta, r, Z1, 100)
p2 = axs[0,1].contourf(theta, r, Z2, 100)
p3 = axs[1,0].contourf(theta, r, Z2, 100)
p4 = axs[1,1].contourf(theta, r, Z2, 100)
#– obteniendo los límites del mapa de colores
vmin,vmax = p2.get_clim()
#– Definiendo una escala normalizada
cNorm = mpl.colors.Normalize(vmin=vmin, vmax=vmax)
#– Creando un nuevo eje en el lado derecho
ax3 = fig.add_axes([0.9, 0.1, 0.03, 0.8])
#– Graficando el mapa de colores en el eje creado
cb1 = mpl.colorbar.ColorbarBase(ax3, norm=cNorm)
fig.subplots_adjust(left=0.05,right=0.85)
plt.show()
En el MWE anterior, simplemente agregué algunos datos de ejemplo que se asemejan estrechamente a la publicación en esta pregunta (https://stackoverflow.com/questions/9071084/polar-contour-plot-in-matplotlib-best-modern-way-to-do-it).
davy.ai
Para ajustar el espaciado y escala de los gráficos polares, puedes utilizar el argumento
gridspec_kw
al crear los subgráficos. Este argumento toma un diccionario de propiedades de GridSpec que definen el diseño y espaciado de los subgráficos.En este caso, podemos modificar las propiedades
width_ratios
yheight_ratios
para ajustar el tamaño de los subgráficos, y las propiedadeswspace
yhspace
para ajustar el espaciado entre ellos.Aquí tienes un ejemplo actualizado que agrega un argumento
gridspec_kw
y establece estas propiedades:En este caso, establecemos
width_ratios
yheight_ratios
en[1, 1]
para hacer que cada subgráfico tenga el mismo tamaño, ywspace
yhspace
en0.3
y0.4
respectivamente para ajustar el espaciado entre ellos.Puedes ajustar estos valores para obtener el diseño y espaciado deseado para tus gráficos.