Патчи, которые я добавляю к моему графику, не являются непрозрачными с альфа = 1. Зачем? - PullRequest
6 голосов
/ 22 марта 2011

Я хотел бы добавить прямоугольник над графиком. Во всей документации, которую я нашел, прямоугольник по умолчанию должен быть непрозрачным, а прозрачность контролироваться альфа-аргументом. Тем не менее, я не могу заставить прямоугольник отображаться как непрозрачный, даже с альфа = 1. Я делаю что-то не так, или мне нужно знать что-то еще о том, как графы взаимодействуют с патчами?

Вот игрушечный пример:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from pylab import *

x = np.arange(10)
y = x
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)

rect = patches.Rectangle( ( 2,3 ), 2, 2, alpha = 1, ec = "gray", fc = "CornflowerBlue", visible = True)
ax.add_patch(rect)

plt.show()

Ответы [ 2 ]

11 голосов
/ 22 марта 2011

Из документации :

В пределах осей порядок появления различных линий, маркеров, текста, коллекций и т. Д. Определяется matplotlib.artist.ArtistСвойство .set_zorder ().Порядок по умолчанию: патчи, линии, текст, с коллекциями линий и коллекциями патчей, появляющимися на том же уровне, что и обычные линии и патчи, соответственно.

Таким образом, патчи будут отображаться ниже линий по умолчанию.Вы можете изменить порядок, указав zorder прямоугольника:

# note alpha is None and visible is True by default
rect = patches.Rectangle((2, 3), 2, 2, ec="gray", fc="CornflowerBlue", zorder=10)

Вы можете проверить zorder линии на вашем графике, изменив ax.plot(x, y) на lines = ax.plot(x, y) и добавив новую строку кода:print lines[0].zorder.Когда я сделал это, zorder для линии было 2. Поэтому прямоугольнику понадобится zorder > 2, чтобы скрыть линию.

0 голосов
/ 22 марта 2011

Ваш цвет лица (CornflowerBlue) выглядит полупрозрачным, но на самом деле цвет, который вы видите, подходит для alpha = 1. Вместо этого попробуйте другой цвет, например «синий».Matplotlib, кажется, помещает прямоугольный патч ниже линии, но я не думаю, что это проблема прозрачности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...