Compare commits

...

3 commits

Author SHA1 Message Date
Xaseiresh
46e6239b9a fix(plots): properly set legend title 2024-09-03 10:18:01 +02:00
Xaseiresh
9b0520bee8 Added old/new comparison plots 2024-09-02 16:34:09 +02:00
Xaseiresh
d246d15360 data: Add real-world IMS measurements 2024-09-02 15:34:28 +02:00
8 changed files with 18108 additions and 9 deletions

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -194,6 +194,9 @@ def decorate_ax(ax, plot_config):
row.mode= "expand"
row.align="right"
if('legend_title' in plot_config):
legend.set_title(plot_config['legend_title']);
ax.grid(True);
def plot_single_graph(fig, plot_config, plot_data):
@ -207,7 +210,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 +234,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';
@ -266,9 +272,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 = 0.1 + 0.9*(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) * 0.8
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;

View file

@ -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