fig, axes = plt.subplots(3, 1, figsize=(12, 7), sharex=True)
for ax, lambda_rate in zip(axes, (0.5, 3.0, 10.0)):
df = PoissonProcessGenerator(
engine="polars",
min_length=100,
max_length=100,
freq="h",
lambda_rate=lambda_rate,
cumulative=False,
seed=42,
).generate(n_series=1)
counts = df["y"].to_list()
ax.step(df["ds"].to_list(), counts, where="mid", alpha=0.85)
ax.axhline(lambda_rate, color="crimson", linestyle="--", linewidth=1)
ax.set(
ylabel="Events",
title=f"lambda_rate={lambda_rate} (observed mean {sum(counts) / len(counts):.2f})",
)
axes[-1].set_xlabel("Timestamp")
plt.tight_layout()
plt.show()