Python Forum
matplotlib creating a scatter plot via PathCollection - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: matplotlib creating a scatter plot via PathCollection (/thread-25781.html)



matplotlib creating a scatter plot via PathCollection - tpourjalali - Apr-11-2020

Hi there, first post here.
I'm trying to dig deeper into matplotlib and learn how it works under the cover. So I thought it'd be a simple task to draw a few points on the canvas and connect them with some lines. I was wrong. I looked at the source code for Axes.scatter. So I wrote the following code:
fig = plt.figure()
ax = fig.add_axes((0,0,1,1), frameon = True, xlim = (0,1), ylim = (0,1), xticks=[0.2], yticks=[0.2])
pos = [(0.2, 0.2), (0.2, 0.3), (0.3, 0.4), (0.4, 0.4), (0.5, 0.3), (0.5, 0.2), (0.35, 0.1)]
pp = Polygon([(0,0), (0.02, 0.02), (0.04, 0)])
#mypath = pp.get_path()
mypath = pp.get_path().transformed(pp.get_transform()) #*
dots = collections.PathCollection(paths = (mypath,), offsets= pos)
#dots.set_transform(transforms.IdentityTransform()).    #**
ax.add_collection(dots)
plt.show()
I expected that this would render 5 triangles in my canvas. But this only drew 1 triangle at the bottom left corner of the canvas. Substituting the line marked with * with the line above it doesn't change anything. Adding line marked with ** causes the single triangle to vanish too.
Can anyone tell me how I can achieve my goal? Sorry if this is the wrong forum; it seems matplotlib is mostly used for data-science.