Compare commits

...

3 Commits

Author SHA1 Message Date
Felix Blanke
387b976f81 Use max index instead of curr_date 2023-09-07 12:37:50 +02:00
Felix Blanke
9b17bafb97 Draw vlines first 2023-09-07 12:37:25 +02:00
Felix Blanke
d2d157c479 Simplify plot 2023-09-07 12:37:02 +02:00

19
wsgi.py
View File

@ -82,11 +82,12 @@ def create_plot_df(
data_dict[key] = df["Digitale Befragung"]
df = pd.DataFrame(data=data_dict).T
max_date = df.index.max()
df.index = df.index.astype("datetime64[ns]") + pd.DateOffset(hours=10)
df = df.reindex(
pd.date_range(start="2023-08-15", end=curr_datetime) + pd.DateOffset(hours=10)
pd.date_range(start="2023-08-15", end=max_date) + pd.DateOffset(hours=10)
)
if current_df is not None:
@ -104,16 +105,20 @@ def create_plot_df(
def plot(
curr_datetime,
df: pd.DataFrame,
annotate_current: bool = False,
total_targets: tuple[int, ...] = (1500, 2500, 3500),
alpha: float | None = None,
landesbez_str: str | None = None,
fix_lims: bool = True,
max_shading_date = None,
) -> str:
fig = plt.figure(dpi=300)
if fix_lims:
for total_target in total_targets:
plt.axhline(y=total_target, color="#48a9be", linestyle="--")
for bez in landesbez_str:
series = df.sum(axis=1) if bez is None else df[bez]
plot_df = series.to_frame("Digitale Befragung").replace(0, np.nan)
@ -193,15 +198,12 @@ def plot(
sec_ax.set_ylabel("# Teilnahmen [% Erfolg]")
sec_ax.yaxis.set_major_formatter(mtick.PercentFormatter())
if fix_lims:
for total_target in total_targets:
plt.axhline(y=total_target, color="#48a9be", linestyle="--")
xlim = plt.xlim()
# fill weekends
max_date = curr_datetime + datetime.timedelta(days=3)
days = pd.date_range(start="2023-08-14", end=max_date)
if max_shading_date is None:
max_shading_date = df.index.max() + datetime.timedelta(days=3)
days = pd.date_range(start="2023-08-14", end=max_shading_date)
for idx, day in enumerate(days[:-1]):
if day.weekday() >= 5:
plt.gca().axvspan(days[idx], days[idx + 1], alpha=0.2, color="gray")
@ -262,7 +264,6 @@ def create_fig(
]
return (
plot(
curr_datetime,
plot_df,
annotate_current=annotate_current,
landesbez_str=landesbez_strs,