Files

26 lines
802 B
Python

import matplotlib.pyplot as plt
import numpy as np
from typing import List
def r_boxplot(arr: List[float], label: str) -> None:
data = np.asarray(arr, dtype=float)
p = np.percentile(data, [0, 25, 50, 75, 100])
fig, ax = plt.subplots(figsize=(6, 2.5))
ax.boxplot(data, positions=[1], vert=False, patch_artist=True, widths=0.6)
labels = ["0%", "25%", "50%", "75%", "100%"]
for val, lab in zip(p, labels):
ax.axvline(val, color="#ff0000", linestyle="--", linewidth=0.8, alpha=0.9)
ax.text(0.5, 1.15, label, transform=ax.transAxes,
ha="center", va="bottom", fontsize=10, fontweight="bold", color="black")
ax.set_yticks([1])
ax.xaxis.grid(True, linestyle="--", alpha=0.3)
fig.tight_layout()
fig.subplots_adjust(top=0.78)
plt.show()