95 lines
2.7 KiB
Python
95 lines
2.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Spyder Editor
|
|
|
|
This is a temporary script file.
|
|
"""
|
|
import sys
|
|
import matplotlib.pyplot as plt
|
|
import csv
|
|
import numpy as np
|
|
|
|
|
|
|
|
# Initialize arrays
|
|
time_array = []
|
|
temperature_array = []
|
|
power_array = []
|
|
fan_speed_array = []
|
|
|
|
temperature_end_offset = 10 # Optional, adjust as needed
|
|
|
|
with open(sys.argv[1], newline='') as csvfile:
|
|
datareader = csv.reader(csvfile, delimiter=',', quotechar='|')
|
|
|
|
for count, row in enumerate(datareader):
|
|
if count == 0:
|
|
# Labels row
|
|
time_name = row[0]
|
|
temp_name = row[1]
|
|
power_name = row[2]
|
|
plot_title = row[3]
|
|
#fan_speed_name = row[4] # Assuming fan speed is at index 5
|
|
else:
|
|
time_array.append(float(row[0]))
|
|
temperature_array.append(float(row[1]))
|
|
power_array.append(float(row[2]))
|
|
fan_speed_array.append(float(row[3]))
|
|
|
|
# Track min/max for scaling
|
|
if count == 1:
|
|
min_temp = float(row[1])
|
|
max_temp = float(row[1])
|
|
else:
|
|
temp_val = float(row[1])
|
|
if temp_val > max_temp:
|
|
max_temp = temp_val
|
|
if temp_val < min_temp:
|
|
min_temp = temp_val
|
|
|
|
# Begin plotting
|
|
fig1, ax1 = plt.subplots()
|
|
fig1.canvas.manager.set_window_title('OZ1CM Python Plotter V1.1')
|
|
fig1.suptitle(plot_title)
|
|
|
|
# Plot Vout
|
|
color = 'tab:blue'
|
|
ax1.set_xlabel('time (s)')
|
|
ax1.set_ylabel('Vout', color=color)
|
|
ax1.plot(time_array, temperature_array, color=color, label='Vout')
|
|
ax1.tick_params(axis='y', labelcolor=color)
|
|
ax1.set_ylim(min_temp, max_temp + temperature_end_offset)
|
|
ax1.set_yticks(np.arange(min_temp, max_temp + temperature_end_offset, step=1.0))
|
|
ax1.grid(True)
|
|
|
|
# Plot Power (2nd y-axis)
|
|
ax2 = ax1.twinx()
|
|
color = 'tab:red'
|
|
ax2.set_ylabel('Current', color=color)
|
|
ax2.plot(time_array, power_array, color=color, label='Current')
|
|
ax2.tick_params(axis='y', labelcolor=color)
|
|
|
|
# Plot Duty (3rd y-axis)
|
|
ax3 = ax1.twinx()
|
|
color = 'tab:purple'
|
|
ax3.spines["right"].set_position(("axes", 1.15)) # Offset 3rd y-axis
|
|
ax3.set_frame_on(True)
|
|
ax3.patch.set_visible(False)
|
|
for sp in ax3.spines.values():
|
|
sp.set_visible(False)
|
|
ax3.spines["right"].set_visible(True)
|
|
|
|
ax3.set_ylabel('Duty', color=color)
|
|
ax3.plot(time_array, fan_speed_array, color=color, linestyle=':', label='Duty')
|
|
ax3.tick_params(axis='y', labelcolor=color)
|
|
|
|
# Combine legends
|
|
lines, labels = ax1.get_legend_handles_labels()
|
|
lines2, labels2 = ax2.get_legend_handles_labels()
|
|
lines3, labels3 = ax3.get_legend_handles_labels()
|
|
ax1.legend(lines + lines2 + lines3, labels + labels2 + labels3, loc='upper left')
|
|
|
|
fig1.tight_layout()
|
|
plt.show()
|
|
|