Extend a contour in 3D by creating
(self, cset, stride=5)
| 2800 | return polyc |
| 2801 | |
| 2802 | def _3d_extend_contour(self, cset, stride=5): |
| 2803 | """ |
| 2804 | Extend a contour in 3D by creating |
| 2805 | """ |
| 2806 | |
| 2807 | dz = (cset.levels[1] - cset.levels[0]) / 2 |
| 2808 | polyverts = [] |
| 2809 | colors = [] |
| 2810 | for idx, level in enumerate(cset.levels): |
| 2811 | path = cset.get_paths()[idx] |
| 2812 | subpaths = [*path._iter_connected_components()] |
| 2813 | color = cset.get_edgecolor()[idx] |
| 2814 | top = art3d._paths_to_3d_segments(subpaths, level - dz) |
| 2815 | bot = art3d._paths_to_3d_segments(subpaths, level + dz) |
| 2816 | if not len(top[0]): |
| 2817 | continue |
| 2818 | nsteps = max(round(len(top[0]) / stride), 2) |
| 2819 | stepsize = (len(top[0]) - 1) / (nsteps - 1) |
| 2820 | polyverts.extend([ |
| 2821 | (top[0][round(i * stepsize)], top[0][round((i + 1) * stepsize)], |
| 2822 | bot[0][round((i + 1) * stepsize)], bot[0][round(i * stepsize)]) |
| 2823 | for i in range(round(nsteps) - 1)]) |
| 2824 | colors.extend([color] * (round(nsteps) - 1)) |
| 2825 | self.add_collection3d(art3d.Poly3DCollection( |
| 2826 | np.array(polyverts), # All polygons have 4 vertices, so vectorize. |
| 2827 | facecolors=colors, edgecolors=colors, shade=True)) |
| 2828 | cset.remove() |
| 2829 | |
| 2830 | def add_contour_set( |
| 2831 | self, cset, extend3d=False, stride=5, zdir='z', offset=None, |
no test coverage detected