は、描画プロセス中に画像上の指定された座標位置にテキストを追加するために使用されます。使用する必要があるのは plt.text() メソッドです。
その主なパラメータは 3 つです:
plt.text(x, y, s)
ここで、x と y は入力点の x 軸と y 軸の座標を表します。 s は文字列を表します。
xticks ラベルと yticks ラベルが設定されている場合、ここでの座標はラベルを参照するのではなく、描画時の x 軸と軸の元の値を参照することに注意してください。
パラメータが多すぎるため、一つ一つの説明は省略し、コードを基に使い方を学習してください。
ha = 'center'
は垂直方向の配置が中央であることを意味し、fontsize = 30
はフォント サイズが 30 であることを意味し、rotation = -25
回転を意味します。角度は -25 度です。 c
色を設定し、alpha
は透明度を設定します。 va
は水平方向の配置を表します。
1. 例
コードは 2 つのテキストを画像に追加し、1 つは透明度 0.4 の「wide on the Journey~」という斜体の透かしです。
もう 1 つのセクションは、ポリラインの各頂点付近にその日の終値をマークすることです。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y) - min(y)) # 水印效果 plt.text(c, d, '旅途中的宽~', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4) plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盘价时序图') plt.xlabel('日期') plt.ylabel('价格') plt.grid(True) plt.legend() # 标出每天的收盘价 for a, b in zip(x, y): plt.text(a, b + 0.01, '%.2f' % b, ha = 'center', va = 'bottom', fontsize = 14) plt.show()
上記のコード例をもとに、コメントを追加します。注釈は、画像内の特定の位置の説明であり、矢印で示すことができます。
plt.annotate()method
plt.annotate()
method構文内の共通パラメータは次のとおりです
plt.annotate(str,xy,xytext,xycoords,arrowcoords)
where
str はコメントで使用される文字列、つまりコメント テキストです。
xy はコメントされる座標点を指します。
xytext はコメント テキストが配置される位置を指します。 xycoords 注釈が付けられた点の座標系属性、つまり点の座標をどのように記述するかです。設定値のデフォルトは「data」で、(x, y) 座標で表されます。その他のオプション設定値は以下の通りです。図はキャンバス全体を参照系として参照しています。また、軸は、いずれかの軸オブジェクト領域のみを意味します。
arrowprops
は、矢印のプロパティを設定するために使用される辞書です。このディクショナリの外に記述されたパラメータは、注釈テキストの属性を表します。辞書に設定できる値は次のとおりです。
#これらのパラメータの詳細な説明: 矢印の全長が最初に決定されます。注釈が付けられた点と注釈の位置座標によって、矢印の長さはテキストの位置座標によって決まります。パラメータ arrowprops の縮小キーを調整することで、矢印の長さをさらに調整できます。縮小は、短縮された長さの割合を表します矢印の長さを全長(注釈点の位置座標と注釈テキストの位置座標によって決定される長さ)にします。縮小が設定されていない場合、縮小はデフォルトで 0、つまり短縮なしになります。縮小が 1 に近い非常に大きい場合、その効果は短縮しないのと同等になります。 1. 例例として、チャート上の最低価格ポイントをマークします。ターゲット位置に赤い矢印と「最低価格」という文字を追加します。注釈テキストのフォントの設定などのその他のパラメーター。c または color は色を表し、fontsize はフォント サイズを表します。プロパティの詳細を確認し、実際に試してみてください。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y) - min(y)) # 仿水印效果 plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 30, rotation = -25, c = 'gray', alpha = 0.4) plt.plot(x, y, label = '股票A收盘价', c = 'r', ls = '-.', marker = 'D', lw = 2) # plt.plot([5.09, 5.13, 5.16, 5.12, 5.09, 5.25, 5.16, 5.20, 5.25], label='股票B收盘价', c='g', ls=':', marker='H', lw=4) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盘价时序图') plt.xlabel('日期') plt.ylabel('价格') plt.grid(True) plt.legend() # 标出每天的收盘价 for a, b in zip(x, y): plt.text(a, b + 0.01, '%.3f'% b, ha = 'center', va = 'bottom', fontsize = 9) # 添加注释 plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 0.5, min(y)), xycoords = 'data', arrowprops = dict(facecolor = 'r', shrink = 0.1), c = 'r',fontsize = 15) plt.show()
次は別の効果です。追加された注釈の矢印の幅は 3、矢印の頭の幅は 10、長さは 20、0.05 だけ短縮され、矢印は緑色、注釈のフォントは赤色です。コード例は次のとおりです。
import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False x = range(9) y = [5.12, 5.15, 5.13, 5.10, 5.2, 5.25, 5.19, 5.24, 5.31] c = 0.5 * (min(x) + max(x)) d = min(y) + 0.3 * (max(y)-min(y)) plt.plot(x, y, label = '股票A收盘价', c = 'k', ls = '-.', marker = 'D', lw = 2) plt.xticks(x, [ '2022-03-27', '2022-03-28', '2022-03-29', '2022-03-30', '2022-03-31', '2022-04-01', '2022-04-04', '2022-04-05', '2022-04-06'], rotation = 45) plt.title('某股票收盘价时序图') plt.xlabel('日期') plt.ylabel('价格') plt.grid(True) plt.legend() # 标出每天的收盘价 for a, b in zip(x, y): plt.text(a, b+0.01, '%.1f'%b, ha='center', va='bottom', fontsize=9) plt.text(c, d, '旅途中的宽', ha = 'center', fontsize = 50, rotation = -25, c = 'r') plt.annotate('最低价', (x[y.index(min(y))], min(y)), (x[y.index(min(y))] + 2, min(y)), xycoords = 'data', arrowprops = dict(width = 3, headwidth = 10, headlength = 20, facecolor = 'g', shrink = 0.05), c = 'r',fontsize = 20) plt.show()
以上がPython で Matplotlib 画像にラベルを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。