水平線はAxes.axhline(y)
を使用して描画することができます。
ラベルを追加するには、Axes.text()
を使用します。トリッキーなビットは、そのテキストを配置する座標を決定することです。 y座標は線が描画されるデータ座標でなければならないが、ラベルのx座標はデータとは独立していなければならない(例えば、異なる軸のスケールを可能にする)ために、x変換軸ylabelsの変換であり、y変換はデータ座標系である。
import matplotlib.pyplot as plt
import matplotlib.transforms as transforms
import numpy as np; np.random.seed(42)
N = 120
x = np.random.rand(N)
y = np.abs(np.random.normal(size=N))*1000
mean= np.mean(y)
fig, ax=plt.subplots()
ax.plot(x,y, ls="", marker="o", markersize=2)
ax.axhline(y=mean, color="red")
trans = transforms.blended_transform_factory(
ax.get_yticklabels()[0].get_transform(), ax.transData)
ax.text(0,mean, "{:.0f}".format(mean), color="red", transform=trans,
ha="right", va="center")
plt.show()