Pytanie Rysowanie prostokąta z ramką tylko w matplotlib


Znalazłem następujący kod tutaj:

from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle
someX, someY = 0.5, 0.5
plt.figure()
currentAxis = plt.gca()
currentAxis.add_patch(Rectangle((someX - .1, someY - .1), 0.2, 0.2,alpha=1))
plt.show()

Co daje: enter image description here

Ale to, czego chcę, to prostokąt z jedynie niebieską obwódką, a wewnątrz powinien być przezroczysty. Jak mogę to zrobić?


21
2018-01-29 23:35


pochodzenie




Odpowiedzi:


Musisz tylko ustawić facecolor do łańcucha "none" (nie python None)

from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle
someX, someY = 0.5, 0.5
fig,ax = plt.subplots()
currentAxis = plt.gca()
currentAxis.add_patch(Rectangle((someX - 0.1, someY - 0.1), 0.2, 0.2,
                      alpha=1, facecolor='none'))

19
2018-01-30 00:12



Dzięki. Istnieje również parametr o nazwie "wypełniony" - Cupitor
@Naji N.B .: fill spodziewa się wartości boolowskiej; więc możesz zachować fill=True i nadal otrzymujesz pusty prostokąt z facecolor='none' w przypadku, gdy przechodziłeś przez różne kolory i 'none' był jednym z nich. - Paul H
Na przykład: matplotlib.patches.Rectangle API. - Evgeni Sergeev


Powinieneś ustawić fill=None.

from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle

someX, someY = 0.5, 0.5
plt.figure()
currentAxis = plt.gca()
currentAxis.add_patch(Rectangle((someX - .1, someY - .1), 0.2, 0.2, fill=None, alpha=1))
plt.show()

enter image description here


9
2018-01-30 00:12