Matplotlib - 如何在文本重叠时将文本设置在其他对象下面?

时间:2011-04-09 13:01:40

标签: text matplotlib

使用matplotlib时,如何将文本设置为低于其他对象,如Rectangles,LineCollections等?或者更一般地说,matplotlib如何决定对象在彼此重叠时的显示顺序?与网格不同,没有像Axes.set_textbelow()这样的函数可供使用,我也搜索了这个主题,但没有得到令人满意的结果。

下面是我用matplotlib绘制的股票图表。注意音量部分,我想将音符(白色文本)设置在它们重叠的音量条下方。注释是使用Axes.text()绘制的Text对象,音量条是使用Axes.vlines()绘制的LineCollection对象。

stock chart I draw with matplotlib

1 个答案:

答案 0 :(得分:3)

你可能正在寻找zorder:

from pylab import *

fig = figure(1)
fig.clf()
ax = subplot(111)
rect = matplotlib.patches.Rectangle((0.2,0.2), 0.3, 0.3, fc = '0.5', ec = '0.0')
ax.add_patch(rect)
ax.text(.4, .4, "Help me, there is a rectangle stuck under me!")

fig = figure(2)
fig.clf()
ax = subplot(111)
rect = matplotlib.patches.Rectangle((0.2,0.2), 0.3, 0.3, fc = '0.5', ec = '0.0')
ax.add_patch(rect)
ax.text(.4, .4, "Help me, I'm stuck under a rectangle!", zorder = -1)

show()