2011-04-09 1 views
2

при использовании matplotlib, как я могу установить текст под другими объектами, такими как Rectangles, LineCollections и т. Д.? Или, в более общем плане, как matplotlib решает порядок появления объектов при перекрытии друг друга? В отличие от сеток нет функции типа Axes.set_textbelow() для использования, я также искал эту тему, но не получил удовлетворительного результата.Matplotlib - Как установить текст под другими объектами, когда они перекрываются?

Ниже приводится диаграмма акций, которую я рисую с помощью matplotlib. Обратите внимание на раздел тома, я хочу, чтобы ноты (белый текст) были ниже баров громкости, где они перекрываются. Заметки - это текстовые объекты, нарисованные с помощью Axes.text(), томики тома - это объекты LineCollection, созданные с помощью Axes.vlines().

stock chart I draw with matplotlib

ответ

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() 
+0

Это просто и ясно. Я пробовал, и результат выглядит так хорошо, как я ожидал, спасибо @Daan! –