前提・実現したいこと
Pythonでグラフを作成する際に、特定の座標に文字列を挿入しようとしています。
しかし、軸の範囲を指定した場合、以下のように文字列が枠外に来たときに文字列が表示されてしまうので自動で非表示にできないかと考えています。
Python
1import matplotlib.pyplot as plt 2 3fig = plt.figure() 4ax = fig.add_subplot(111) 5ax.text(4, 4, "Python") 6ax.set_xlim(0, 4) 7ax.set_ylim(0, 4) 8fig.savefig('img.jpg')
単純な削除ではなく、表示/非表示の自動化をしたい理由は、文字列のプロットを他のグラフでも使いまわしたいためです。具体的にはtextplot.py
において、
Python
1import matplotlib.pyplot as plt 2 3def textplot(ax): 4 list_text = [ 5 [4, 4, "Python1"], 6 [3, 7, "Python2"], 7 ... 8 ] 9 10 for x in list_text: 11 ax.text(*x)
のような関数を作成しておき、これをgraphplot.py
においてインポートして使用するような運用を想定しているためです。
Python
1import matplotlib.pyplot as plt 2import textplot # textplot.pyをインポート 3 4fig = plt.figure() 5ax = fig.add_subplot(111) 6textplot.textplot(ax) # テキストをプロット 7ax.plot(*data) # データをプロット 8fig.savefig('img.jpg') 9
試したこと
一応あらかじめxlimとylimに渡す値で条件分岐させればできるのですが,インポートして使用する場合に必ずx, y軸の範囲を引数として指定しなければならないのがやや面倒に感じます。この点につきまして、よりスマートなやり方がありましたらご教示いただければ幸いです。「matplotlib text 枠外 非表示」等と検索してもヒットしませんでした。
Python
1import matplotlib.pyplot as plt 2 3fig = plt.figure() 4ax = fig.add_subplot(111) 5 6# 軸の最大・最小値 7xmin, xmax = 0, 4 8ymin, ymax = 0, 4 9 10ax.set_xlim(xmin, xmax) 11ax.set_ylim(ymin, ymax) 12 13# 挿入する文字の座標 14x, y = 3, 3 15 16if ( xmin < x < xmax ) & (ymin < y < ymax): 17 ax.text(x, y, "Python") 18 19fig.savefig('img.jpg')
補足情報(FW/ツールのバージョンなど)
Python 3.9.5
Matplotlib 3.4.1
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/03/03 05:50