2017-03-18 6 views
1

次のプロットに示されている水平の赤い線に文字列ラベルを追加するにはどうすればよいですか?私は、ラインの横にあるy軸のラベルに "k = 305"のようなものを追加したいと思います。青い点は他のデータなので値は関係ありません。この問題を再現するために、あらゆる種類のデータをプロットすることができます。私の質問は赤い線です。y軸にラベルを付けて、matplotlibの水平線のyの値を表示します

plt.plot((0,502),(305,305),'r-') 
plt.title("ALS+REG") 

plot

答えて

0

水平線は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() 

enter image description here

関連する問題