diff --git a/Images/Datavis/IMS Measurements/Spectrum_23.csv b/Images/Datavis/IMS Measurements/Spectrum_23.csv index 391f617..e47a9d3 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_23.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_23.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.034644 0.003004,0.034621 0.003008,0.03458 diff --git a/Images/Datavis/IMS Measurements/Spectrum_37.csv b/Images/Datavis/IMS Measurements/Spectrum_37.csv index 5cc6cee..46b60b7 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_37.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_37.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.034314 0.003004,0.033956 0.003008,0.03252 diff --git a/Images/Datavis/IMS Measurements/Spectrum_45.csv b/Images/Datavis/IMS Measurements/Spectrum_45.csv index 182e655..0c9c267 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_45.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_45.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.037185 0.003004,0.037185 0.003008,0.037544 diff --git a/Images/Datavis/IMS Measurements/Spectrum_54.csv b/Images/Datavis/IMS Measurements/Spectrum_54.csv index 4aa8f2c..186a31b 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_54.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_54.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.18145 0.003004,0.20729 0.003008,0.23851 diff --git a/Images/Datavis/IMS Measurements/Spectrum_59.csv b/Images/Datavis/IMS Measurements/Spectrum_59.csv index 029dc8a..c1a81be 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_59.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_59.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.065177 0.003004,0.10681 0.003008,0.16351 diff --git a/Images/Datavis/IMS Measurements/Spectrum_7.csv b/Images/Datavis/IMS Measurements/Spectrum_7.csv index de395a3..7c43034 100644 --- a/Images/Datavis/IMS Measurements/Spectrum_7.csv +++ b/Images/Datavis/IMS Measurements/Spectrum_7.csv @@ -1,3 +1,4 @@ +time,voltage 0.003,0.12952 0.003004,0.15397 0.003008,0.19317 diff --git a/Images/Datavis/generate_plot.py b/Images/Datavis/generate_plot.py index a590664..9c207a0 100644 --- a/Images/Datavis/generate_plot.py +++ b/Images/Datavis/generate_plot.py @@ -207,7 +207,7 @@ def plot_single_graph(fig, plot_config, plot_data): x_data = plot_data[x_key]; y_data = plot_data[y_key]; - ax.plot(x_data, y_data); + ax.plot(x_data, y_data, linewidth=plot_config.get('linewidth')); if(not 'xformatter' in plot_config): plot_config['xformatter'] = 'engineering'; @@ -231,16 +231,19 @@ def plot_lt_sweep(fig, plot_config, plot_data): if(y_key == None): raise RuntimeError("No Y-Data Key (`y_key`) specified for plot!") + num_steps = len(plot_data['steps']) + + for idx, step in enumerate(plot_data['steps']): + plot_params = dict() + plot_params['label'] = step['step'] - if(plot_config.get('colourmap', 'coolwarm') == 'coolwarm'): - num_steps = len(plot_data['steps']) - cmap = plt.cm.coolwarm + if(plot_config.get('colourmap', 'coolwarm') == 'coolwarm'): + cmap = plt.cm.coolwarm + plot_params['color'] = cmap(idx/(num_steps-1)) + + plot_params['linewidth'] = plot_config.get('linewidth'); - for idx, step in enumerate(plot_data['steps']): - ax.plot(step[x_key], step[y_key], color=cmap(idx/(num_steps-1)), label=step['step']); - else: - for idx, step in enumerate(plot_data['steps']): - ax.plot(step[x_key], step[y_key], label=step['step']); + ax.plot(step[x_key], step[y_key], **plot_params) if(not 'xformatter' in plot_config): plot_config['xformatter'] = 'engineering'; @@ -250,7 +253,14 @@ def plot_lt_sweep(fig, plot_config, plot_data): if(not 'xmax' in plot_config): plot_config['xmax'] = np.max(plot_data['steps'][0][x_key]); - ax.legend(); + if(num_steps > 1): + legend_opts = dict() + legend_opts['title'] = "TEST" + + if('legend_title' in plot_config): + legend_opts['title'] = plot_config['legend_title'] + + ax.legend(**legend_opts); decorate_ax(ax, plot_config); @@ -266,9 +276,45 @@ def perform_bandwidth_normalization(plot_data, plot_config): step[plot_config['y_key']] = new_y_data +def perform_peak_normalization(plot_data, plot_config): + print("Normalizing peak height to 1") + + for step in plot_data['steps']: + y_data = step[plot_config['y_key']] + new_y_data = [] + + y_max = max(y_data) + y_min = min(y_data) + + scaling_factor = y_max if (y_max > (-y_min)) else y_min + + for datapoint in y_data: + new_y_data.append(datapoint / scaling_factor) + + step[plot_config['y_key']] = new_y_data + +def perform_offset_removal(plot_data, plot_config): + print("Removing offset") + + for step in plot_data['steps']: + y_data = step[plot_config['y_key']] + new_y_data = [] + + offset_value = np.percentile(y_data, 30) + + for datapoint in y_data: + new_y_data.append(datapoint - offset_value) + + step[plot_config['y_key']] = new_y_data + + def perform_processing_step(data_process_step, plot_data, plot_config): if(data_process_step == 'normalize_bandwidth'): perform_bandwidth_normalization(plot_data, plot_config) + if(data_process_step == 'remove_offset'): + perform_offset_removal(plot_data, plot_config) + if(data_process_step == 'normalize_peak'): + perform_peak_normalization(plot_data, plot_config) def generate_plot(plot_config): global YAML_DIR; diff --git a/Images/Datavis/plots.yml b/Images/Datavis/plots.yml index 5491b50..6c12f8e 100644 --- a/Images/Datavis/plots.yml +++ b/Images/Datavis/plots.yml @@ -7,6 +7,56 @@ defaults: Cin: $C_{in}$ plots: + - loadtype: multicsv + load: + Gemitiv: IMS Measurements/Spectrum_7.csv + HighTIME: IMS Measurements/Spectrum_23.csv + + load_values: ["time", "voltage"] + + type: lt_sweep + + data_processing_steps: + - normalize_peak + - remove_offset + - normalize_peak + + y_key: voltage + x_key: time + + xscale: linear + + xlabel: Zeit (s) + ylabel: Normalisierter Messwert (a.u.) + + linewidth: 1 + + ofile: IMS Measurements/averaged_compare.png + - loadtype: multicsv + load: + Gemitiv: IMS Measurements/Spectrum_59.csv + HighTIME: IMS Measurements/Spectrum_37.csv + + load_values: ["time", "voltage"] + + type: lt_sweep + + data_processing_steps: + - normalize_peak + - remove_offset + - normalize_peak + + y_key: voltage + x_key: time + + xscale: linear + + xlabel: Zeit (s) + ylabel: Normalisierter Messwert (a.u.) + + linewidth: 0.8 + + ofile: IMS Measurements/raw_compare.png - load: 47M N.1: V1_Measurements/V1.1-a1/47M_cap/linearity_1.csv 47M N.2: V1_Measurements/V1.1-a1/47M_cap/linearity_2.csv @@ -668,6 +718,7 @@ plots: y_key: V(n002) dB title: Verstärkung bei variiertem GBWP + legend_title: GBWP ylabel: Normalisierte Verstärkung (dB) - load: DesignEstimate/CompositeStage_ADA4817_StageAmpSweep_bandwidth.txt