Skip to content
Snippets Groups Projects
Commit 9527bb05 authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

plots

parent a7f9f72c
No related branches found
No related tags found
No related merge requests found
......@@ -18,7 +18,7 @@ device.write('meas_imp')
sample,sample_dict = probendaten()
messparameter,messparameter_dict = messparameter()
sweep_parameter,sweep_parameter_dict = sweep_parameter()
control_panel,measure,clear_graphs,view=control_panel()
control_panel,measure,view=control_panel()
#set up interface
out = widgets.Output()
......@@ -30,7 +30,7 @@ display(hbox2,out)
#add widgets to a list for disabling them
all_widgets = [measure,clear_graphs]
all_widgets = [measure]
add_widgets_to_list(sample_dict,all_widgets)
add_widgets_to_list(sweep_parameter_dict,all_widgets)
add_widgets_to_list(messparameter_dict,all_widgets)
......@@ -112,8 +112,64 @@ def on_measure_clicked(b):
area = area * 10**(-8) # in cm2
biases= np.round(np.linspace(messparameter_dict["start"].value,messparameter_dict["stop"].value,num_of_points,endpoint = True),3)
# frequency index
f_index = messparameter_dict['f_point'].value-1
# create the figure
fig = plt.figure(layout = "constrained")
spec = fig.add_gridspec(ncols=3, nrows=2)
ax1 = fig.add_subplot(spec[0,0])
ax1_twin = ax1.twinx()
ax1.set_title("Cp/D(f) live")
ax1.set_xlabel("Frequency (Hz)")
ax1.set_ylabel("Cp (F)")
ax1_twin.set_ylabel("D")
ax2 = fig.add_subplot(spec[0,1])
ax2_twin = ax2.twinx()
ax2.set_title("Z/Phi(f) live")
ax2.set_xlabel("Frequency (Hz)")
ax2.set_ylabel("Z (Ohm)")
ax2_twin.set_ylabel("Phi (°)")
ax3 = fig.add_subplot(spec[0,2])
ax3.set_title("ImZ(ReZ(f)) live")
ax3.set_xlabel("Re Z (Ohm)")
ax3.set_ylabel("Im Z (Ohm)")
ax4 = fig.add_subplot(spec[1,0])
ax4_twin = ax4.twinx()
ax4.set_title("Cp/D(U)")
ax4.set_xlabel("Voltage U (V)")
ax4.set_ylabel("Cp (F)")
ax4_twin.set_ylabel("D")
ax5 = fig.add_subplot(spec[1,1])
ax5_twin = ax5.twinx()
ax5.set_title("Z/Phi(U)")
ax5.set_xlabel("Voltage U (V)")
ax5.set_ylabel("Z (Ohm)")
ax5_twin.set_ylabel("Phi (°)")
ax6 = fig.add_subplot(spec[1,2])
ax6_twin = ax6.twinx()
ax6.set_title("Cp/D(f)")
ax6.set_xlabel("Frequency (Hz)")
ax6.set_ylabel("Cp (F)")
ax6_twin.set_ylabel("D")
mng = plt.get_current_fig_manager()
mng.window.state('zoomed')
for bias in biases:
view["v-value"].value = str(bias)
# voltage index
v_index = messparameter_dict['v_point'].value-1
U_values.extend([bias]*sweep_parameter_dict['nop'].value)
area_values.extend([area]*sweep_parameter_dict['nop'].value)
device.set_parameter('set_bias', bias) #set the bias
......@@ -173,11 +229,69 @@ def on_measure_clicked(b):
G_area_omega= G/area/omega
G_area_omega_values.extend(G_area_omega)
# do the plots
# first the live ones
#clear the live axes
ax1.clear()
ax1_twin.clear()
ax2.clear()
ax2_twin.clear()
ax3.clear()
# frequency Cp/D plot
ax1.plot(freq,Cp,color = 'b')
ax1.tick_params(axis = 'y',labelcolor = 'b')
ax1_twin.plot(freq,D, color = 'y')
ax1_twin.tick_params(axis='y',labelcolor = 'y')
# frequecy Z-phi
ax2.plot(freq,Z,color = 'b')
ax2.tick_params(axis = 'y',labelcolor = 'b')
ax2_twin.plot(freq,phi, color = 'y')
ax2_twin.tick_params(axis='y',labelcolor = 'y')
# Rez - Imz
ax3.plot(ReZ,ImZ,color = 'b')
ax3.tick_params(axis = 'y',labelcolor = 'b')
# now the rest of the plots
# Voltage vs Cp D for the user specified frequency
# This is updated for every iteration
ax4.scatter(bias, Cp[f_index],color ='b')
ax4.tick_params(axis = 'y',labelcolor = 'b')
ax4_twin.scatter(bias, D[f_index],color ='y')
ax4_twin.tick_params(axis = 'y',labelcolor = 'y')
# Voltage, Z-phi
# This is also updated every iteration
ax5.scatter(bias, Z[f_index],color ='b')
ax4.tick_params(axis = 'y',labelcolor = 'b')
ax5_twin.scatter(bias, phi[f_index],color ='y')
ax5_twin.tick_params(axis = 'y',labelcolor = 'y')
# Final Plot
# This if for all the frequencies for the calculated voltage
if biases[v_index]== bias:
ax6.scatter(freq,Cp,color = 'b')
ax6.tick_params(axis = 'y',labelcolor = 'b')
ax6_twin.scatter(freq,D, color = 'y')
ax6_twin.tick_params(axis='y',labelcolor = 'y')
fig.draw()
if messparameter_dict["hysterisis"].value == True:
reversed_biases = reversed_array(biases)
for bias in reversed_biases:
view["v-value"].value = str(bias)
# voltage index
v_index = -messparameter_dict['v_point'].value # in reverse
U_values.extend([bias]*sweep_parameter_dict['nop'].value)
area_values.extend([area]*sweep_parameter_dict['nop'].value)
device.set_parameter('set_bias', bias) #set the bias
......@@ -237,7 +351,64 @@ def on_measure_clicked(b):
G_area_omega= G/area/omega
G_area_omega_values.extend(G_area_omega)
# do the plots
# first the live ones
#clear the live axes
ax1.clear()
ax1_twin.clear()
ax2.clear()
ax2_twin.clear()
ax3.clear()
# frequency Cp/D plot
ax1.plot(freq,Cp,color = 'b')
ax1.tick_params(axis = 'y',labelcolor = 'b')
ax1_twin.plot(freq,D, color = 'y')
ax1_twin.tick_params(axis='y',labelcolor = 'y')
# frequecy Z-phi
ax2.plot(freq,Z,color = 'b')
ax2.tick_params(axis = 'y',labelcolor = 'b')
ax2_twin.plot(freq,phi, color = 'y')
ax2_twin.tick_params(axis='y',labelcolor = 'y')
# Rez - Imz
ax3.plot(ReZ,ImZ,color = 'b')
ax3.tick_params(axis = 'y',labelcolor = 'b')
# now the rest of the plots
# Voltage vs Cp D for the user specified frequency
# This is updated for every iteration
ax4.scatter(bias, Cp[f_index],color ='b')
ax4.tick_params(axis = 'y',labelcolor = 'b')
ax4_twin.scatter(bias, D[f_index],color ='y')
ax4_twin.tick_params(axis = 'y',labelcolor = 'y')
# Voltage, Z-phi
# This is also updated every iteration
ax5.scatter(bias, Z[f_index],color ='b')
ax4.tick_params(axis = 'y',labelcolor = 'b')
ax5_twin.scatter(bias, phi[f_index],color ='y')
ax5_twin.tick_params(axis = 'y',labelcolor = 'y')
# Final Plot
# This if for all the frequencies for the calculated voltage
if biases[v_index]== bias:
ax6.scatter(freq,Cp,color = 'g')
ax6.tick_params(axis = 'y',labelcolor = 'g')
ax6_twin.scatter(freq,D, color = 'r')
ax6_twin.tick_params(axis='y',labelcolor = 'r')
fig.draw()
fig.show()
device.write('bias_off')
# save to file
......@@ -249,7 +420,7 @@ def on_measure_clicked(b):
f.write(f"# f_start {sweep_parameter_dict['stop'].value} Hz f_stop {sweep_parameter_dict['stop'].value} Hz no_steps {sweep_parameter_dict['nop'].value} SweepType {sweep_parameter_dict['type'].value}"+"\n")
f.write(f"# OSC {sweep_parameter_dict['osc'].value} V"+"\n")
f.write(f"# integration time {sweep_parameter_dict['integration'].value} averaging {sweep_parameter_dict['averaging'].value}"+"\n")
f.write(f"area {area} cm^2"+"\n")
f.write(f"# area {area} cm^2"+"\n")
f.write("\n")
# create the dataframe
......
%% Cell type:code id:52e7274d-b638-4da1-acca-94cfc0c86c5a tags:
``` python
%matplotlib tk
```
%% Cell type:code id:0a1db92b-e4d3-49f4-a95f-40d58e575404 tags:
``` python
import matplotlib.pyplot as plt
# create the figure
fig = plt.figure(layout = "constrained")
spec = fig.add_gridspec(ncols=3, nrows=2)
ax1 = fig.add_subplot(spec[0,0])
ax1_twin = ax1.twinx()
ax1.set_title("Cp/D(f) live")
ax1.set_xlabel("Frequency (Hz)")
ax1.set_ylabel("Cp (F)")
ax1_twin.set_ylabel("D")
ax2 = fig.add_subplot(spec[0,1])
ax2_twin = ax2.twinx()
ax2.set_title("Z/Phi(f) live")
ax2.set_xlabel("Frequency (Hz)")
ax2.set_ylabel("Z (Ohm)")
ax2_twin.set_ylabel("Phi (°)")
ax3 = fig.add_subplot(spec[0,2])
ax3.set_title("ImZ(ReZ(f)) live")
ax3.set_xlabel("Re Z (Ohm)")
ax3.set_ylabel("Im Z (Ohm)")
ax4 = fig.add_subplot(spec[1,0])
ax4_twin = ax4.twinx()
ax4.set_title("Cp/D(U)")
ax4.set_xlabel("Voltage U (V)")
ax4.set_ylabel("Cp (F)")
ax4_twin.set_ylabel("D")
ax5 = fig.add_subplot(spec[1,1])
ax5_twin = ax5.twinx()
ax5.set_title("Z/Phi(U)")
ax5.set_xlabel("Voltage U (V)")
ax5.set_ylabel("Z (Ohm)")
ax5_twin.set_ylabel("Phi (°)")
ax6 = fig.add_subplot(spec[1,2])
ax6_twin = ax6.twinx()
ax6.set_title("Cp/D(f)")
ax6.set_xlabel("Frequency (Hz)")
ax6.set_ylabel("Cp (F)")
ax6_twin.set_ylabel("D")
mng = plt.get_current_fig_manager()
mng.window.state('zoomed')
fig.show()
```
%% Cell type:code id:ff74d7a2-3426-433a-8152-43083bda500a tags:
``` python
```
......@@ -72,9 +72,7 @@ def check_values(voltage:dict,freq:dict):
# calculate the number of points for voltage
voltage_points = abs(voltage["stop"].value-voltage["start"].value)/abs(voltage["step"].value) + 1
if voltage["v_point"].value > voltage_points and voltage["hysterisis"].value == False:
return False
elif voltage["v_point"].value > 2*voltage_points and voltage["hysterisis"].value == True:
if voltage["v_point"].value > voltage_points:
return False
# prove that we check a valld frequency point
......
......@@ -141,7 +141,6 @@ def control_panel():
control_panel[4,1] = widgets.Checkbox(description = 'Clear Graphs',value = True,indent = False,layout=Layout(height='auto', width = width))
measure = control_panel[0,:]
clear_graphs = control_panel[4,1]
view = {
'v-point': control_panel[2,0],
......@@ -149,7 +148,7 @@ def control_panel():
'v-value':control_panel[4,0]
}
return control_panel,measure,clear_graphs,view
return control_panel,measure,view
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment