26 lines
802 B
Python
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()
|
|
|