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()

