Skip to content
Snippets Groups Projects

Resolve "release v2.3.0"

Merged Ghost User requested to merge release_v2.3.0 into master
1 file
+ 18
2
Compare changes
  • Side-by-side
  • Inline
@@ -1439,6 +1439,18 @@ class PlotSeasonalMSEStack(AbstractPlotClass):
sampling_letter = {"hourly": "H", "daily": "d"}.get(sampling[pos], "")
return sampling, sampling_letter
@staticmethod
def _set_bar_label(ax):
opts = {}
sum = {}
for c in ax.containers:
labels = [v for v in c.datavalues]
opts[c] = labels
sum = {i: sum.get(i, 0) + l for (i, l) in enumerate(labels)}
for c, labels in opts.items():
_l = [f"{round(100 * labels[i] / sum[i])}%" for i in range(len(labels))]
ax.bar_label(c, labels=_l, label_type='center')
def _plot(self, dim, split_ahead=True, sampling="daily", orientation="vertical"):
_, sampling_letter = self._get_target_sampling(sampling, 1)
if split_ahead is True:
@@ -1449,36 +1461,40 @@ class PlotSeasonalMSEStack(AbstractPlotClass):
data.to_pandas().T.plot.bar(ax=ax, stacked=True, cmap="Dark2", legend=False)
ax.xaxis.label.set_visible(False)
ax.set_ylabel(f"{self.error_measure} (in {self.error_unit})")
self._set_bar_label(ax)
else:
m = data.to_pandas().T.shape[0]
fig, ax = plt.subplots(1, 1, figsize=(6, m))
data.to_pandas().T.plot.barh(ax=ax, stacked=True, cmap="Dark2", legend=False)
ax.yaxis.label.set_visible(False)
ax.set_xlabel(f"{self.error_measure} (in {self.error_unit})")
self._set_bar_label(ax)
fig.legend(*ax.get_legend_handles_labels(), loc="upper center", ncol=4)
fig.tight_layout(rect=[0, 0, 1, 0.9])
else:
self.plot_name = self.plot_name_orig + "_" + orientation
data = self._data
n = len(data.coords[dim])
m = data.max(self.season_dim).shape
if orientation == "vertical":
fig, ax = plt.subplots(1, n, sharey=True)
fig, ax = plt.subplots(1, n, sharey=True, figsize=(np.prod(m) / 0.8, 5))
for i, sel in enumerate(data.coords[dim].values):
data.sel({dim: sel}).to_pandas().T.plot.bar(ax=ax[i], stacked=True, cmap="Dark2", legend=False)
label = str(sel) + sampling_letter
ax[i].set_title(label)
ax[i].xaxis.label.set_visible(False)
self._set_bar_label(ax[i])
ax[0].set_ylabel(f"{self.error_measure} (in {self.error_unit})")
fig.legend(*ax[0].get_legend_handles_labels(), loc="upper center", ncol=4)
fig.tight_layout(rect=[0, 0, 1, 0.9])
else:
m = data.max(self.season_dim).shape
fig, ax = plt.subplots(n, 1, sharex=True, figsize=(6, np.prod(m) * 0.6))
for i, sel in enumerate(data.coords[dim].values):
data.sel({dim: sel}).to_pandas().T.plot.barh(ax=ax[i], stacked=True, cmap="Dark2", legend=False)
label = str(sel) + sampling_letter
ax[i].set_title(label)
ax[i].yaxis.label.set_visible(False)
self._set_bar_label(ax[i])
ax[-1].set_xlabel(f"{self.error_measure} (in {self.error_unit})")
fig.legend(*ax[0].get_legend_handles_labels(), loc="upper center", ncol=4)
fig.tight_layout(rect=[0, 0, 1, 0.95])
Loading