def _plot3d_points_flat_fired(self): '''Plot array of variable using colormap ''' aramis_cdt = self.aramis_cdt m.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1) , size=(1600, 900)) engine = m.get_engine() scene = engine.scenes[0] scene.scene.disable_render = True plot3d_var = getattr(aramis_cdt, self.plot3d_var_) mask = np.logical_or(np.isnan(aramis_cdt.x_arr), aramis_cdt.data_array_undeformed_mask[0, :, :]) mask = None m.points3d(aramis_cdt.x_arr[mask], aramis_cdt.y_arr[mask], aramis_cdt.z_arr[mask], plot3d_var[mask], mode='cube', scale_mode='none', scale_factor=1) m.view(0, 0) scene.scene.parallel_projection = True scene.scene.disable_render = False if self.plot_title: m.title('step no. %d' % aramis_cdt.evaluated_step_idx, size=0.3) m.scalarbar(orientation='horizontal', title=self.plot3d_var_) # plot axes m.axes() m.show()
def plot_w_hist(self): font = {'family' : 'times new roman', # 'weight' : 'bold', 'size' : 20 } p.rc('font', **font) # pass in the font dict as kwargs p.hist(self.crack_arr_w, normed=True, range=(0, 0.25), bins=40, histtype='bar', color='gray') p.xlabel('w [mm]') p.ylabel('frequency [%]') p.twinx() p.hist(self.crack_arr_w, normed=True, range=(0, 0.25), histtype='step', color='black', cumulative=True, linewidth=3, bins=40) p.ylim(0, 1) p.ylabel('fraction [-]') # figure title # uses directory path by default # if plot_title == 'true': m.title(os.path.join(self.data_dir, self.basename)) p.show()
def plot2d(self): p.subplot(2, 2, 1) p.plot(self.x_idx_arr, self.d_ux_avg_w, color='black') y_max_lim = p.gca().get_ylim()[-1] p.plot(self.x_idx_arr[:-1], self.crack_filter_avg * y_max_lim, color='magenta', linewidth=1) p.subplot(2, 2, 2) p.plot(self.x_idx_arr, self.ux_w, color='green') p.plot(self.x_idx_arr, self.ux_w_avg, color='red') p.subplot(2, 2, 3) p.plot(self.x_idx_arr, self.dd_ux_avg_w, color='black') p.plot(self.x_idx_arr, self.ddd_ux_avg_w, color='blue') y_max_lim = p.gca().get_ylim()[-1] p.plot(self.x_idx_arr[:-1], self.crack_filter_avg * y_max_lim, color='magenta', linewidth=2) p.subplot(2, 2, 4) p.hist(self.crack_arr_w, bins=40, normed=True) p.twinx() p.hist(self.crack_arr_w, normed=True, histtype='step', color='black', cumulative=True, bins=40) # figure title # uses directory path by default # if plot_title == 'true': m.title(os.path.join(self.data_dir, self.basename)) try: p.tight_layout() except: pass p.show()
def plot3d_surf(self): # set background color to white and forground color to black # m.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(1600, 900)) #---------------------------------------------------- # plot 'plot_var' as 3d-surface plot #---------------------------------------------------- # @todo: is this comment still relavant? "why is moved in the y direction?" if self.use_mask == 'true': mask_arr = self.grid_mask_w else: mask_arr = None plot3d_var = getattr(self, self.plot3d_var_[0]) vmax = self.plot3d_var_[1] # m.surf(self.x_arr, self.y_arr, plot3d_var, vmax = vmax, mask = mask_arr, warp_scale = warp_scale) m.surf(self.x_arr_avg, self.y_arr_avg, plot3d_var, vmax=vmax, mask=mask_arr, warp_scale=warp_scale) # use average coordinate values (1D-arrays) # # m.surf(self.x_arr_avg, self.y_arr_avg, plot3d_var, vmax = vmax, mask = mask_arr, warp_scale = warp_scale) # plot scalarbar # m.scalarbar(orientation='horizontal', title=self.plot3d_var) # plot axes # # m.axes() # figure title # uses directory path by default # if plot_title == 'true': m.title(os.path.join(self.data_dir, self.basename)) # get mayavi engine # engine = m.get_engine() # rotate scene # scene = engine.scenes[0] scene.scene.parallel_projection = True if self.warp_scale == 1: scene.scene.z_plus_view() else: scene.scene.isometric_view() scene.scene.camera.position = [-319.07443227647047, -469.29101319337502, 434.40818470843612] scene.scene.camera.focal_point = [-66.983721840860625, -79.447548413824947, 1.1328650920308507] scene.scene.camera.view_angle = 30.0 scene.scene.camera.view_up = [0.49290441759866288, 0.48449293877207339, 0.72271144130401255] scene.scene.camera.clipping_range = [325.28180250321782, 995.97136098229157] scene.scene.camera.compute_view_plane_normal() scene.scene.render() # predefine the position of the scalarbar # module_manager = engine.scenes[0].children[0].children[0].children[0].children[0] module_manager.scalar_lut_manager.scalar_bar_representation.minimum_size = np.array([1, 1]) module_manager.scalar_lut_manager.scalar_bar_representation.position2 = np.array([ 0.27780226, 0.11638842]) module_manager.scalar_lut_manager.scalar_bar_representation.position = np.array([ 0.59707606, 0.16105125]) module_manager.scalar_lut_manager.scalar_bar_representation.maximum_size = np.array([100000, 100000]) m.show()
def plot3d_cracks(self): # set background color to white and forground color to black # m.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(900, 600)) # get mayavi engine # engine = m.get_engine() scene = engine.scenes[0] scene.scene.disable_render = True #----------------------------------- # plot crack width ('crack_field_w') #----------------------------------- # flatten z_arr # @todo: use instead: extent = [xmin, xmax, ymin, ymax, zmin, zmax], # z_arr = np.zeros_like(self.z_arr) # NOTE: coordinate order is switched in order to display glyphs at their tail instead of their center # (only possible in mayavis's x-direction) # plot3d_var = getattr(self, self.plot3d_var_[0]) # plot3d_var = getattr(self, 'crack_field_w') vmax = self.plot3d_var_[1] m.points3d(z_arr, self.x_arr, self.y_arr, plot3d_var, mode='cube', colormap="blue-red", scale_mode='scalar', vmax=vmax) # plot scalarbar # m.scalarbar(orientation='horizontal', title=self.plot3d_var) # figure title # uses directory path by default # if plot_title == 'true': m.title(os.path.join(self.data_dir, self.basename)) # scale glyphs # glyph = engine.scenes[0].children[0].children[0].children[0] glyph.glyph.glyph_source.glyph_position = 'tail' glyph.glyph.glyph_source.glyph_source.x_length = self.glyph_x_length_cr glyph.glyph.glyph_source.glyph_source.y_length = self.glyph_y_length_cr glyph.glyph.glyph_source.glyph_source.z_length = self.glyph_z_length_cr #----------------------------------- # plot displacement jumps ('d_ux_w') #----------------------------------- # plot3d_var = getattr(self, 'd_ux_w') plot3d_var = getattr(self, 'crack_field_w') m.points3d(z_arr, self.x_arr, self.y_arr, plot3d_var, mode='cube', colormap="blue-red", scale_mode='none', vmax=vmax) # m.surf(z_arr, self.x_arr, self.y_arr, colormap="blue-red") glyph1 = engine.scenes[0].children[1].children[0].children[0] # # switch order of the scale_factor corresponding to the order of the glyph1.glyph.glyph_source.glyph_source.x_length = self.glyph_z_length glyph1.glyph.glyph_source.glyph_source.y_length = self.glyph_x_length glyph1.glyph.glyph_source.glyph_source.z_length = self.glyph_y_length # rotate scene # scene = engine.scenes[0] scene.scene.parallel_projection = True m.view(0, 90) # scene.scene.camera.position = [616.49832063929375, 638.29074243238438, 514.06081220962164] # scene.scene.camera.focal_point = [11.259753942489624, 11.990119934082031, 9.7502956390380859] # scene.scene.camera.view_angle = 30.0 # scene.scene.camera.view_up = [0.79246046934594205, -0.54446721176015089, -0.27488517574095594] # scene.scene.camera.clipping_range = [595.49259262137014, 1526.1362976999562] # scene.scene.camera.compute_view_plane_normal() glyph.glyph.glyph_source.glyph_position = 'head' glyph.glyph.glyph_source.glyph_position = 'tail' module_manager = engine.scenes[0].children[0].children[0] module_manager.scalar_lut_manager.scalar_bar_representation.minimum_size = np.array([1, 1]) module_manager.scalar_lut_manager.scalar_bar_representation.position2 = np.array([ 0.20603604, 0.16827586]) module_manager.scalar_lut_manager.scalar_bar_representation.moving = 0 module_manager.scalar_lut_manager.scalar_bar_representation.position = np.array([ 0.53971972, 0.19931035]) module_manager.scalar_lut_manager.scalar_bar_representation.maximum_size = np.array([100000, 100000]) scene.scene.disable_render = False # plot axes # m.axes() m.show()
def plot3d_points(self): # set background color to white and forground color to black # m.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(900, 600)) # NOTE: the missing facettes have all the coordinate position (0,0,0); # the missing facettes therefore are displayed in points3d as missing elements (gaps) plot3d_var = getattr(self, self.plot3d_var_[0]) vmax = self.plot3d_var_[1] # m.points3d(self.x_arr, self.y_arr, self.z_arr, plot3d_var, mode = 'cube', colormap = "blue-red", scale_mode ='none', vmax = vmax) # m.points3d(self.x_arr_avg, self.y_arr_avg, self.z_arr, plot3d_var, mode = 'cube', colormap = "blue-red", scale_mode ='none', vmax = vmax) m.points3d(self.x_arr, self.y_arr, self.z_arr, plot3d_var, mode='cube', colormap="blue-red", scale_mode='none', vmax=vmax) # switch coordinate order to display glyphs at their head/tail insted of their center # m.points3d(self.z_arr, self.x_arr, self.y_arr, plot3d_var, mode = 'cube', colormap = "blue-red", scale_mode ='none', vmax = vmax) # plot scalarbar # m.scalarbar(orientation='horizontal', title=self.plot3d_var) # @todo: predefine scalarbar position # m.scalarbar().position = [0., 0.] # plot axes # m.axes() # figure title # uses directory path by default # if plot_title == 'true': m.title(os.path.join(self.data_dir, self.basename)) # get mayavi engine # engine = m.get_engine() # scale glyphs # glyph = engine.scenes[0].children[0].children[0].children[0] glyph.glyph.glyph_source.glyph_source.x_length = self.glyph_x_length glyph.glyph.glyph_source.glyph_source.y_length = self.glyph_y_length glyph.glyph.glyph_source.glyph_source.z_length = self.glyph_z_length glyph.glyph.glyph_source.glyph_position = 'tail' # rotate scene # scene = engine.scenes[0] scene.scene.parallel_projection = True scene.scene.z_plus_view() # preset position of scalarbar # module_manager = engine.scenes[0].children[0].children[0] module_manager.scalar_lut_manager.scalar_bar_representation.maximum_size = np.array([100000, 100000]) module_manager.scalar_lut_manager.scalar_bar_representation.minimum_size = np.array([1, 1]) module_manager.scalar_lut_manager.scalar_bar_representation.position2 = np.array([ 0.20603604, 0.16827586]) module_manager.scalar_lut_manager.scalar_bar_representation.moving = 0 module_manager.scalar_lut_manager.scalar_bar_representation.position = np.array([ 0.40858859, 0.09310345]) module_manager.scalar_lut_manager.scalar_bar_representation.maximum_size = np.array([100000, 100000]) # # @todo: use mlab-functionality instead # view = mlab.view() # roll = mlab.roll() # # Reposition the camera # mlab.view(*view) # mlab.roll(roll) # # f = mlab.gcf() # camera = f.scene.camera # cam.parallel_scale = 9 m.show()
def _plot3d_points_fired(self): '''Plot arrays of variables in 3d relief ''' aramis_cdt = self.aramis_cdt m.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(900, 600)) engine = m.get_engine() scene = engine.scenes[0] scene.scene.disable_render = True #----------------------------------- # plot crack width ('crack_field_w') #----------------------------------- z_arr = np.zeros_like(aramis_cdt.z_arr) plot3d_var = getattr(aramis_cdt, self.plot3d_var_) m.points3d(z_arr, aramis_cdt.x_arr, aramis_cdt.y_arr, plot3d_var, mode='cube', colormap="blue-red", scale_mode='scalar', vmax=.2) # scale glyphs # glyph = engine.scenes[0].children[0].children[0].children[0] glyph.glyph.glyph_source.glyph_position = 'tail' glyph.glyph.glyph_source.glyph_source.x_length = self.glyph_x_length_cr glyph.glyph.glyph_source.glyph_source.y_length = self.glyph_y_length_cr glyph.glyph.glyph_source.glyph_source.z_length = self.glyph_z_length_cr #----------------------------------- # plot displacement jumps ('d_ux_w') #----------------------------------- plot3d_var = getattr(aramis_cdt, self.plot3d_var_) m.points3d(z_arr, aramis_cdt.x_arr, aramis_cdt.y_arr, plot3d_var, mode='cube', colormap="blue-red", scale_mode='none') glyph1 = engine.scenes[0].children[1].children[0].children[0] # # switch order of the scale_factor corresponding to the order of the glyph1.glyph.glyph_source.glyph_source.x_length = self.glyph_z_length glyph1.glyph.glyph_source.glyph_source.y_length = self.glyph_x_length glyph1.glyph.glyph_source.glyph_source.z_length = self.glyph_y_length # rotate scene # scene = engine.scenes[0] scene.scene.parallel_projection = True m.view(0, 90) glyph.glyph.glyph_source.glyph_position = 'head' glyph.glyph.glyph_source.glyph_position = 'tail' module_manager = engine.scenes[0].children[0].children[0] module_manager.scalar_lut_manager.scalar_bar_representation.minimum_size = np.array([1, 1]) module_manager.scalar_lut_manager.scalar_bar_representation.position2 = np.array([ 0.20603604, 0.16827586]) module_manager.scalar_lut_manager.scalar_bar_representation.moving = 0 module_manager.scalar_lut_manager.scalar_bar_representation.position = np.array([ 0.53971972, 0.19931035]) module_manager.scalar_lut_manager.scalar_bar_representation.maximum_size = np.array([100000, 100000]) scene.scene.disable_render = False if self.plot_title: m.title('step no. %d' % aramis_cdt.evaluated_step_idx, size=0.3) m.scalarbar(orientation='horizontal', title=self.plot3d_var_) # plot axes # m.axes() m.show()