Este es un tipo de pregunta de seguimiento al post this, donde se discutió la coloración de los ejes, marcas y etiquetas. Espero que esté bien abrir una nueva pregunta extendida para esto.Cambiando elegantemente el color de un cuadro de trama en matplotlib
Cambiando el color de un cuadro completo (marcas y ejes) alrededor de una doble trama (a través de add_subplot
) con ejes [ax1, ax2] resulta en una gran cantidad de código. Este fragmento de código cambia el color del marco de la trama superior: (!)
ax1.spines['bottom'].set_color('green')
ax1.spines['top'].set_color('green')
ax1.spines['left'].set_color('green')
ax1.spines['right'].set_color('green')
for t in ax1.xaxis.get_ticklines(): t.set_color('green')
for t in ax1.yaxis.get_ticklines(): t.set_color('green')
for t in ax2.xaxis.get_ticklines(): t.set_color('green')
for t in ax2.yaxis.get_ticklines(): t.set_color('green')
Así que para cambiar el color del marco de dos parcelas con dos ejes Y cada uno, necesitaría 16 líneas de código .. . Esta es la forma en que parece:
Otros métodos desenterré hasta ahora:
matplotlib.rc: discutido here; cambia globalmente, no localmente. Quiero tener otras parcelas en diferentes colores. Por favor, no hay discusiones acerca de demasiados colores en parcelas ... :-)
matplotlib.rc('axes',edgecolor='green')
desenterrar las espinas del eje, y luego cambiarlo: también discutido here; no es realmente elegante, creo.
for child in ax.get_children(): if isinstance(child, matplotlib.spines.Spine): child.set_color('#dddddd')
¿Existe un elegante manera de condensar el bloque anterior, algo más "Pythonic"?
Estoy usando python 2.6.5 con matplotlib 0.99.1.1 bajo ubuntu.
Bueno. Por favor incluye los dos colores y voy a 'aceptar' tu respuesta. (como: 'para hacha, color en zip ([ax1, ax2, ax3, ax4], ['verde', 'verde', 'azul', 'azul']): plt.setp (ax.spines.values(), color = color); plt.setp ([ax.get_xticklines(), ax.get_yticklines()], color = color) ') – Boffin
@Boffin hecho :) – ianalis
en su última línea Creo que usted quiso decir' ax1 'ser simplemente' ax' – Joel