Source code for pyleecan.Functions.Plot.plot_A_time_space

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

import matplotlib.pyplot as plt
from ...definitions import config_dict
from ...Functions.Plot.plot_3D_Data import plot_3D_Data
from ...Functions.Plot.plot_2D_Data import plot_2D_Data

FONT_NAME = config_dict["PLOT"]["FONT_NAME"]


[docs]def plot_A_time_space( data, is_deg=True, is_elecorder=False, is_spaceorder=False, freq_max=20000, r_max=100, z_max=None, is_norm=False, unit="SI", save_path=None, is_auto_ticks=True, is_show_fig=None, fig=None, color_list=[], ): """Plots a field as a function of time and space (angle) Parameters ---------- data : Data a Data object is_deg : bool boolean indicating if the angle must be converted to degrees is_elecorder : bool boolean indicating if we want to use the electrical order for the fft axis is_spaceorder : bool boolean indicating if we want to use the spatial order for the fft axis freq_max : float maximum value of the frequency for the fft axis r_max : int maximum value of the wavenumber for the fft axis z_max : float maximum value for the field is_norm : bool boolean indicating if the field must be normalized unit : str unit in which to plot the field save_path : str full path including folder, name and extension of the file to save if save_path is not None is_auto_ticks : bool in fft, adjust ticks to freqs and wavenumbers (deactivate if too close) is_show_fig : bool True to show figure after plot color_list : list list of colors to use for each curve """ if is_show_fig is None: is_show_fig = True if fig is None else False # Set plot fig, axs = plt.subplots(3, 2, tight_layout=True, figsize=(20, 10)) title = data.name + " over time and space" # pcolorplot if is_deg: angle_str = "angle{°}" else: angle_str = "angle{rad}" plot_3D_Data( data, "time", angle_str, is_norm=is_norm, unit=unit, z_max=z_max, fig=fig, ax=axs[0, 0], is_auto_ticks=is_auto_ticks, is_show_fig=False, is_2D_view=True, ) # 2D plots # time plot_2D_Data( data, "time", fig=fig, ax=axs[1, 0], color_list=color_list, is_auto_ticks=is_auto_ticks, is_show_fig=False, ) # angle plot_2D_Data( data, angle_str, fig=fig, ax=axs[2, 0], color_list=color_list, is_auto_ticks=is_auto_ticks, is_show_fig=False, ) # fft time if is_elecorder: elec_max = None for ax in data.axes: if ax.name == "time": try: elec_max = freq_max / ax.normalizations["elec_order"] except: pass if elec_max is None: freq_str = "freqs=[0," + str(freq_max) + "]" else: freq_str = "freqs->elec_order[0," + str(elec_max) + "]" else: freq_str = "freqs=[0," + str(freq_max) + "]" plot_2D_Data( data, freq_str, fig=fig, ax=axs[1, 1], unit=unit, color_list=color_list, is_auto_ticks=is_auto_ticks, is_show_fig=False, ) # fft space if is_spaceorder: order_max = None for ax in data.axes: if ax.name == "angle": try: order_max = r_max / ax.normalizations["space_order"] except: pass if order_max is None: wavenb_str = "wavenumber=[0," + str(r_max) + "]" else: wavenb_str = "wavenumber->space_order[0," + str(order_max) + "]" else: wavenb_str = "wavenumber=[0," + str(r_max) + "]" plot_2D_Data( data, wavenb_str, fig=fig, ax=axs[2, 1], unit=unit, color_list=color_list, is_auto_ticks=is_auto_ticks, is_show_fig=False, ) axs[0, 1].axis("off") axs[0, 1].set_title("") fig.canvas.set_window_title(title) fig.suptitle(title, x=0.65, fontsize=24, fontname=FONT_NAME) fig.tight_layout() if save_path is not None: fig.savefig(save_path) plt.close() if is_show_fig: fig.show()