-
Notifications
You must be signed in to change notification settings - Fork 0
/
plots.py
105 lines (86 loc) · 2.93 KB
/
plots.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import seaborn as sns
SMALL_SIZE = 8
MEDIUM_SIZE = 14
BIGGER_SIZE = 42
def plot_temps(df):
plt.rc('font', size=MEDIUM_SIZE) # controls default text sizes
plt.figure(figsize=(12, 4))
plt.subplot(1, 3, 1)
df['t_out'].plot()
plt.title('$T_{out}$')
plt.ylabel("$(K)$")
plt.xlabel("time (s)")
plt.subplot(1, 3, 2)
df['t_in'].plot(label="$T_{in}$")
df['t_amb'].plot(label="$T_{amb}$")
plt.legend()
plt.ylabel("$(K)$")
plt.xlabel("time (s)")
plt.subplot(1, 3, 3)
df['delta_t'].plot()
plt.title('$T_{out} - T_{in}$')
plt.ylabel("$(K)$")
plt.xlabel("time (s)")
plt.tight_layout()
plt.show()
def plot_power_eff(df):
plt.rc('font', size=MEDIUM_SIZE) # controls default text sizes
plt.figure(figsize=(12, 4))
plt.subplot(1, 3, 1)
df['dni'].plot()
plt.title("DNI")
plt.ylabel("$(W \cdot m^{-2})$")
plt.xlabel("time (s)")
plt.subplot(1, 3, 2)
df['qdot'].plot()
plt.title("$\dot Q$")
plt.ylabel("$(W)$")
plt.xlabel("time (s)")
plt.subplot(1, 3, 3)
df['eff'].plot(label='ISO')
plt.title("Efficiency")
plt.xlabel("time (s)")
plt.tight_layout()
plt.show()
def plot_kwh_timeseries(dfin, col='qdot', interval="D", ylabel="kWh", folder=None):
plt.rc('font', size=BIGGER_SIZE) # controls default text sizes
dfout = dfin.resample(interval).sum() / 60000
fig, ax = plt.subplots(figsize=(36, 7))
ax.set_title("Energy yield")
ax.bar(dfout.index, dfout[col])
ax.set_xlim(dfout.index[0], dfout.index[-1])
ax.xaxis.set_major_formatter(mdates.DateFormatter("%b"))
ax.set_xlabel("2016")
ax.set_ylabel(ylabel)
ax.tick_params(axis='y', which='major', pad=30)
plt.show()
def plot_calendar_heatmap(dfin, col, freq="1min", cbar_title="cbar_title", units="",
title="Title",
folder="calendar-heatmaps"):
plt.rc('font', size=BIGGER_SIZE) # controls default text sizes
df = dfin.resample(freq).mean().dropna()
df["Time, UTC"] = df.index.time
df["Date"] = df.index.date
df.reset_index(inplace=True)
df = df.pivot("Time, UTC", "Date", col)
fig, ax = plt.subplots(figsize=(30, 8))
ax.set_title(title)
ax = sns.heatmap(df, cmap="jet", xticklabels=31, yticklabels=120)
cbar = ax.collections[0].colorbar
# cbar.set_label(cbar_label, labelpad=30)
cbar.ax.set_title(cbar_title)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b'))
""" Y tick labels format HH:MM """
yticklabels = ax.get_yticklabels()
for lab in yticklabels:
lab.set_text(lab.get_text()[:-3])
ax.set_yticklabels(yticklabels)
ax.set_xlabel("2016")
ax.invert_yaxis()
ax.tick_params(axis='y', which='major', pad=30)
plt.xticks(rotation=0)
plt.tight_layout()
plt.savefig(f"{folder}/{col}.png")
plt.show()