def __call__(self, plot):
ax = plot.data.axis
xax = plot.data.ds.coordinates.x_axis[ax]
yax = plot.data.ds.coordinates.y_axis[ax]
if not hasattr(self.vertices, "in_units"):
vertices = plot.data.pf.arr(self.vertices, "code_length")
else:
vertices = self.vertices
l_cy = triangle_plane_intersect(plot.data.axis, plot.data.coord, vertices)[:,:,(xax, yax)]
# l_cy is shape (nlines, 2, 2)
# reformat for conversion to plot coordinates
l_cy = np.rollaxis(l_cy,0,3)
# convert all line starting points
l_cy[0] = self.convert_to_plot(plot,l_cy[0])
# convert all line ending points
l_cy[1] = self.convert_to_plot(plot,l_cy[1])
# convert back to shape (nlines, 2, 2)
l_cy = np.rollaxis(l_cy,2,0)
# create line collection and add it to the plot
lc = matplotlib.collections.LineCollection(l_cy, **self.plot_args)
plot._axes.add_collection(lc)
评论列表
文章目录