Cupitor
Cupitor

Reputation: 11637

Drawing rectangle with border only in matplotlib

So I found the following code here:

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

Which gives: enter image description here

But what I want is a rectangle with only a blue border and inside of it to be transparent. How can I do this?

Upvotes: 38

Views: 75662

Answers (2)

Paul H
Paul H

Reputation: 68146

You just need to set the facecolor to the string 'none' (not the 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'))

Upvotes: 39

Cupitor
Cupitor

Reputation: 11637

You should set the 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

Upvotes: 29

Related Questions