jwst-plotter/graph.py

50 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import datetime
import pandas as pd
from matplotlib import pyplot as plt
import matplotlib.dates as md
plt.rcParams["figure.autolayout"] = True
data_frame = pd.read_csv("data.csv", delimiter=';')
# Subplot, to move legend next to plot
# 1 row, 1 col, index: 1
plt.subplot(1, 1, 1)
# Rotate long date text
plt.xticks(rotation=25)
# pyplot doesn't like timestamps
# convert them to "date-numbers" and format
datenums = md.date2num([datetime.datetime.fromtimestamp(ts) for ts in data_frame.timestamp])
xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
ax = plt.gca()
ax.xaxis.set_major_formatter(xfmt)
ax.set_ylabel('Temperature [°C]')
# Data
plt.plot(datenums, data_frame.tempWarmSide1C, label='Warm 1', color='orange', marker='x')
for i, j in zip(datenums, data_frame.tempWarmSide1C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.plot(datenums, data_frame.tempWarmSide2C, label='Warm 2', color='orangered', marker='x')
for i, j in zip(datenums, data_frame.tempWarmSide2C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.plot(datenums, data_frame.tempCoolSide1C, label='Cool 1', color='blue', marker='x')
for i, j in zip(datenums, data_frame.tempCoolSide1C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.plot(datenums, data_frame.tempCoolSide2C, label='Cool 2', color='navy', marker='x')
for i, j in zip(datenums, data_frame.tempCoolSide2C):
ax.annotate(str(round(j, 2)), xy=(i, j), rotation=45)
plt.axhline(y=-223, color='darkblue', linestyle=':', label='Operating temperature')
plt.legend(bbox_to_anchor=(1, 1), loc="upper left")
plt.show()