#!/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()