Source code for pyleecan.Functions.Plot.plot_A_surf

# -*- coding: utf-8 -*-

from ..init_fig import init_fig
from .plot_A_3D import plot_A_3D
from ...definitions import config_dict
from numpy import meshgrid, max as np_max


[docs]def plot_A_surf( data, is_deg=True, t_max=None, a_max=400, z_min=None, z_max=None, is_norm=False, unit="SI", colormap=None, save_path=None, fig=None, subplot_index=None, ): """Plots the isosurface of a field in 3D Parameters ---------- data : Data a Data object is_deg : bool boolean indicating if the angle must be converted to degrees t_max : float maximum value of the time for the x axis a_max : float maximum value of the angle for the y axis z_min : float minimum value of the amplitude for the z axis z_max : float maximum value of the amplitude for the z axis is_norm : bool boolean indicating if the field must be normalized unit : str unit in which to plot the field colormap : colormap object colormap prescribed by user save_path : str path and name of the png file to save fig : Matplotlib.figure.Figure existing figure to use if None create a new one """ # Set plot is_show_fig = True if fig is None else False (fig, axes, patch_leg, label_leg) = init_fig(fig, shape="rectangle") title = data.name + " as a function of time and space" if colormap is None: colormap = config_dict["PLOT"]["COLOR_DICT"]["COLOR_MAP"] xlabel = "Time [s]" if is_deg: ylabel = "Angle [°]" else: ylabel = "Angle [rad]" if unit == "SI": unit = data.unit if is_norm: zlabel = r"$\frac{" + data.symbol + "}{" + data.symbol + "_0}\, [" + unit + "]$" else: zlabel = r"$" + data.symbol + "\, [" + unit + "]$" # Extract the field if is_deg: results = data.get_along("time", "angle{°}", unit=unit, is_norm=is_norm) else: results = data.get_along("time", "angle{°}", unit=unit, is_norm=is_norm) angle = results["angle"] time = results["time"] Ydata = results[data.symbol] if is_deg and round(np_max(angle) / 6) % 5 == 0: yticks = [i * round(np_max(angle) / 6) for i in range(7)] else: yticks = None angle_map, time_map = meshgrid(angle, time) if t_max is None: t_max = np_max(time) if z_max is None: z_max = np_max(Ydata) if z_min is None: z_min = -z_max # Plot the original graph plot_A_3D( time_map, angle_map, Ydata, fig=fig, colormap=colormap, x_min=0, x_max=t_max, y_min=0, y_max=a_max, z_min=z_min, z_max=z_max, title=title, xlabel=xlabel, ylabel=ylabel, zlabel=zlabel, yticks=yticks, type="surf", save_path=save_path, subplot_index=subplot_index, ) if is_show_fig: fig.show()