在matplotlib中优雅地改变绘图框的颜色 [英] Elegantly changing the color of a plot frame in matplotlib
问题描述
这是一种后续问题,;全球变化,而不是本地变化。我想要一些其他的地块用不同的颜色。请不要在图片中讨论太多的颜色...: - )
matplotlib.rc('axes',edgecolor = 'green')
挖出轴的脊,然后更改: 此处;
对于ax.get_children()中的子代:
if isinstance(child,matplotlib .spines.Spine):
child.set_color('#dddddd')
有没有优雅的方式来压缩上面的块,
更多的是pythonic?
我在Ubuntu下使用带有matplotlib 0.99.1.1的python 2.6.5。
重构上述代码:
import matplotlib.pyplot as plt
for ax,color in zip([ax1,ax2,ax3,ax4],['green','green','blue','blue']):
plt.setp(ax.spines。 values(),color = color)
plt.setp([ax.get_xticklines(),ax.get_yticklines()],color = color)
This is a kind of follow-up question to this post, where the coloring of axes, ticks and labels was discussed. I hope it is alright to open a new, extended question for this.
Changing the color of a complete frame (ticks and axes) around a double-plot (via add_subplot
) with axes [ax1, ax2] results in a lot of code. This snippet changes the color of the frame of the upper plot:
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')
So for changing the frame color of two plots with two y-axes each, I would need 16(!) lines of code... This is how it looks like:
Other methods I dug up so far:
matplotlib.rc: discussed here; changes globally, not locally. I want to have some other plots in different colors. Please, no discussions about too many colors in plots... :-)
matplotlib.rc('axes',edgecolor='green')
dig out the spines of the axis, then change it: also discussed here; not really elegant, I think.
for child in ax.get_children(): if isinstance(child, matplotlib.spines.Spine): child.set_color('#dddddd')
Is there an elegant way of condensing the above block, something more "pythonic"?
I'm using python 2.6.5 with matplotlib 0.99.1.1 under ubuntu.
Refactoring your code above:
import matplotlib.pyplot as plt
for ax, color in zip([ax1, ax2, ax3, ax4], ['green', 'green', 'blue', 'blue']):
plt.setp(ax.spines.values(), color=color)
plt.setp([ax.get_xticklines(), ax.get_yticklines()], color=color)
这篇关于在matplotlib中优雅地改变绘图框的颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!