es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Personalizar el estilo de los ejes de un gráfico polar de contorno.

Estoy utilizando GridSpec para crear una cuadrícula de gráficos de contorno polar en matplotlib. Para ayudar con la visualización, estoy intentando personalizar la apariencia de los gráficos de contorno. Mira este único gráfico polar como ejemplo (MWE a continuación)

polar contour plot

Tengo dos preguntas de formato en mente:

  1. ¿Cómo puedo personalizar el eje r para mostrar solo los valores 0, 20, 40 y 60? ¿Cómo puedo hacer que estos números se muestren en blanco?

  2. Al trazar varios gráficos polares, elijo eliminar los ejes y las marcas en los otros usando ax.grid(False), ax.set_xticklabels([]) y ax.set_yticklabels([]). Sin embargo, queda una barra blanca a lo largo de theta = 0, que me gustaría eliminar. Mira esta imagen como ejemplo de lo que quiero decir:

enter image description here

MWE:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec

gs = gridspec.GridSpec(1, 1)
gs.update(wspace=0.205, hspace=0.105)
fig = plt.figure(figsize=(500/72.27, 450/72.27))

X = np.arange(0, 70, 10)
Y = np.radians(np.linspace(0, 360, 20))
r, theta = np.meshgrid(X, Y)
Z1 = np.random.random((Y.size, X.size))

ax = fig.add_subplot(gs[0, 0], projection='polar')
cax = ax.contourf(theta, r, Z1, 10)
plt.show()
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para personalizar la apariencia de los contornos en una rejilla de gráficos de contornos polares en matplotlib, puedes abordar las siguientes preguntas de formato:

    1. Para personalizar el eje-r y mostrar solo los valores 0, 20, 40 y 60, y hacer que estos números se muestren en blanco, puedes utilizar las funciones set_rticks() y tick_params(). Aquí tienes cómo lograrlo:
    ax.set_rticks([0, 20, 40, 60])    # ajustar las marcas del eje-r a 0, 20, 40 y 60
    ax.tick_params(colors='white')    # ajustar el color de las marcas a blanco
    
    1. Para eliminar la barra blanca a lo largo de theta=0 al trazar varios gráficos polares, puedes utilizar la función set_theta_zero_location() y establecerla en 'N'. Aquí tienes cómo lograrlo:
    ax.set_theta_zero_location('N')    # establecer la ubicación de cero theta en Norte para eliminar la barra blanca
    

    Aquí tienes un ejemplo mínimo funcional (MWE) modificando ambos cambios de formato:

    import matplotlib.pyplot as plt
    import numpy as np
    from matplotlib import gridspec
    
    gs = gridspec.GridSpec(1, 1)
    gs.update(wspace=0.205, hspace=0.105) 
    fig = plt.figure(figsize=(500/72.27,450/72.27))
    
    X = np.arange(0, 70, 10)
    Y = np.radians(np.linspace(0, 360, 20))
    r, theta = np.meshgrid(X, Y)
    Z1 = np.random.random((Y.size, X.size))
    
    ax = fig.add_subplot(gs[0, 0], projection='polar')
    cax = ax.contourf(theta, r, Z1, 10)
    
    ax.set_rticks([0, 20, 40, 60])    # ajustar las marcas del eje-r a 0, 20, 40 y 60
    ax.tick_params(colors='white')    # ajustar el color de las marcas a blanco
    ax.set_theta_zero_location('N')   # establecer la ubicación de cero theta en Norte para eliminar la barra blanca
    
    plt.show()
    

    Y así es cómo se verá el MWE anterior:

    gráfico de contorno polar

Comments are closed.