-
-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Description
Problem
Only using patches.Rectangle() of plt.subplots() works properly as shown below:
from torchvision.datasets import CelebA
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
rect = Rectangle(xy=(x, y), width=w, height=h, linewidth=3, edgecolor='r', facecolor='none', clip_on=True) # Here
axis.add_patch(p=rect) # HereAnd only using axes.Axes.scatter() of plt.subplots() works properly as shown below:
from torchvision.datasets import CelebA
import torchvision
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from matplotlib.patches import Circle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
for px, py in lm.split(2): # Here
axis.scatter(x=px, y=py, c='#1f77b4') # HereAnd only using axes.Axes.plot() of plt.subplots() works properly as shown below:
from torchvision.datasets import CelebA
import torchvision
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from matplotlib.patches import Circle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
px = [] # Here
py = [] # Here
for j, v in enumerate(lm): # Here
if j%2 == 0: # Here
px.append(v) # Here
else: # Here
py.append(v) # Here
axis.plot(px, py) # HereBut using patches.Rectangle() of plt.subplots() with axes.Axes.scatter() of plt.subplots() doesn't work properly as shown below:
from torchvision.datasets import CelebA
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
rect = Rectangle(xy=(x, y), width=w, height=h, linewidth=3, edgecolor='r', facecolor='none', clip_on=True) # Here
axis.add_patch(p=rect) # Here
for px, py in lm.split(2): # Here
axis.scatter(x=px, y=py, c='#1f77b4') # HereAnd using patches.Rectangle() of plt.subplots() with axes.Axes.plot() of plt.subplots() doesn't work properly as shown below:
from torchvision.datasets import CelebA
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
rect = Rectangle(xy=(x, y), width=w, height=h, linewidth=3, edgecolor='r', facecolor='none', clip_on=True) # Here
axis.add_patch(p=rect) # Here
px = [] # Here
py = [] # Here
for j, v in enumerate(lm): # Here
if j%2 == 0: # Here
px.append(v) # Here
else: # Here
py.append(v) # Here
axis.plot(px, py) # HereSo instead, I used patches.Rectangle() of plt.subplots() with patches.Circle() of plt.subplots(), then they properly work as shown below:
from torchvision.datasets import CelebA
my_data = CelebA(
root="data",
split="all",
target_type=["bbox", "landmarks"]
)
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle
from matplotlib.patches import Circle
fig, axes = plt.subplots(nrows=2, ncols=5, figsize=(12, 6))
for (im, ((x, y, w, h), lm)), axis in zip(my_data, axes.ravel()):
axis.imshow(X=im)
rect = Rectangle(xy=(x, y), width=w, height=h, linewidth=3, edgecolor='r', facecolor='none', clip_on=True) # Here
axis.add_patch(p=rect) # Here
for px, py in lm.split(2): # Here
axis.add_patch(p=Circle(xy=(px, py))) # HereProposed solution
So, it seems like matplotlib.patches works with matplotlib.patches so patches.Scatter() and patches.Plot() should be added.





