matplotlibの中でデータの座標を使用しながら、どのようにY軸テキストがプロット内に表示させるには?

瓶:

私は、異なる色のプロットで最大および最小点を表示するプロットを有します。プロットは動的であるので、時々テキストは、右の一番上に表示されるytick ラベルの良い見ていません。私は維持したいytick私は、プロット内のテキストを置くことを考えて、のを。
しかし、私のx軸は、あるdatetime変数が、間にあるX、Y位置を提供するように、第一及び第二の xtick私を投げています。

私は解決策を試してみました、ここで全体の軸のためではなく、その。

基づいて、ドキュメント私が試み軸COORDSを過ぎる(0,0は、左下で、1,1右上である)が、問題は、その困難は、内部の上部の両方で適切な画素位置を思い付くことです水平線。また、私は可能だと思う維持することは困難でデータが毎日変化するため。

私はに固執したいデータの座標データは動的であることから。
それは、データの座標を使用して、それを行うことは可能ですか?

私は私の状況のた​​めにでっち上げ、次のコードを使用してください -

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.transforms as transforms

x = ['2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05']
y = [1,2,3,4,5.8]
df = pd.DataFrame({'X': x, 'Y': y})

fig, ax = plt.subplots()
sns.lineplot(x='X', y='Y', data=df)
show_point = 5.7
ax.axhline(show_point, ls='dotted')
trans = transforms.blended_transform_factory(ax.get_yticklabels()[0].get_transform(), ax.transData)
ax.text('2020-03-01', show_point, color="red", s=show_point, transform=trans, ha="right", va="bottom")

show_point2 = 1.7
ax.axhline(show_point2, ls='dotted')
trans = transforms.blended_transform_factory(ax.get_yticklabels()[0].get_transform(), ax.transAxes)
ax.text(0.05, 0.15, color="red", s=show_point2, transform=trans, ha="center", va="bottom")

plt.show()

EDIT 1
、それは(実際のプロットに)今のように見えるもの- 期待される結果-
ここでは、画像の説明を入力します。
ここでは、画像の説明を入力します。

ウィリアム・ミラー:

まだデータの座標で作業しているときに使用する場合は、すべての軸変換のものを避けることができmatplotlib.axes.Axes.annotate、このような何かを

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

x = ['2020-03-01', '2020-03-02', '2020-03-03', '2020-03-04', '2020-03-05']
y = [1,2,3,4,5.8]
df = pd.DataFrame({'X': x, 'Y': y})

fig, ax = plt.subplots()
sns.lineplot(x='X', y='Y', data=df)
show_point = 5.7
ax.axhline(show_point, ls='dotted')
ax.annotate(show_point, [ax.get_xticks()[0], show_point], va='bottom', 
            ha='right', color='red')

show_point2 = 1.7
ax.axhline(show_point2, ls='dotted')
ax.annotate(show_point2, [ax.get_xticks()[0], show_point2], va='bottom', 
            ha='right', color='red')

plt.show()

これは、生成されます

ここでは、画像の説明を入力します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=365208&siteId=1