From 46ee57b62244bbca7d98bc58aae4ca72b19960b9 Mon Sep 17 00:00:00 2001 From: Noe Brucy Date: Wed, 16 Dec 2020 15:56:01 +0100 Subject: [PATCH] [plotter] [map] Uses im_extent information to the speed overlay. Fixes #1 --- plotter.py | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/plotter.py b/plotter.py index daca3d7..c2e75c2 100644 --- a/plotter.py +++ b/plotter.py @@ -701,36 +701,41 @@ class Plotter(Aggregator, BaseProcessor): label, unit_old, unit = self._ax_label_unit(dmap_vh_node, "", unit, unit_coeff) vel_red = self.pp_params.plot.vel_red - radius = self.save.root.maps._v_attrs.radius - center = self.save.root.maps._v_attrs.center - lbox = self.save.root._v_attrs.lbox - map_vh_red = dmap_vh[::vel_red, ::vel_red] * unit_old.express( - unit - ) # take only a subset of velocities + # take only a subset of velocities + map_vh_red = dmap_vh[::vel_red, ::vel_red] * unit_old.express(unit) map_vv_red = dmap_vv[::vel_red, ::vel_red] * unit_old.express(unit) - # TODO : redo this with im_extent - - nh = map_vh_red.shape[0] - nv = map_vv_red.shape[1] - vec_h = ( - np.arange(nh) * 2.0 / nh * radius - radius + center[0] + radius / nh - ) * lbox - vec_v = ( - np.arange(nv) * 2.0 / nv * radius - radius + center[1] + radius / nv - ) * lbox - hh, vv = np.meshgrid(vec_h, vec_v) + # get norm infomartion norm_v = np.sqrt(map_vh_red ** 2 + map_vv_red ** 2) max_v = np.max(norm_v) min_v = np.min(norm_v) - Q = plt.quiver(hh, vv, map_vh_red, map_vv_red, units="width", **kwargs) + # Number of selected vectors + nh = map_vh_red.shape[0] + nv = map_vh_red.shape[1] + # Creates vectors position grid + size_h = im_extent[1] - im_extent[0] # size of the map + dh = size_h / dmap_vh.shape[0] # size of cell + seph = size_h / nh # separation between vectors + h = im_extent[0] + dh + np.arange(nh) * seph + + size_v = im_extent[3] - im_extent[2] + dv = size_v / dmap_vh.shape[1] + sepv = size_v / nv + v = im_extent[2] + dv + np.arange(nv) * sepv + + hh, vv = np.meshgrid(h, v) + + # plot vector field + vec_field = plt.quiver(hh, vv, map_vh_red, map_vv_red, units="width", **kwargs) + + # add vector key if key_v is None: key_v = (max_v + min_v) / 2.0 plt.quiverkey( - Q, + vec_field, 0.6, 0.98, key_v,