ホームページ >バックエンド開発 >Python チュートリアル >Twinx() を使用して副軸を持つプロットの凡例にラベルを追加するにはどうすればよいですか?

Twinx() を使用して副軸を持つプロットの凡例にラベルを追加するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 04:32:30988ブラウズ

How to Add Labels to the Legend in Plots with Secondary Axes Using twinx()?

twinx() を使用して二次軸を持つプロットの凡例にラベルを追加する

単一のプロットに複数の軸があると、視覚化に役立ちます異なるソースまたは異なる単位からのデータ。 Twinx() 関数を使用して 2 番目の軸を作成する場合、2 番目の軸にプロットされた線にラベルを追加し、凡例に含める必要がある場合があります。

これを行うには、次のいずれかを追加できます。 ax2.legend(loc=0) を使用して 2 次軸の個別の凡例を作成します。ただし、この方法では 2 つの別々の凡例が作成されます。

より一貫した表示を行うには、次の手順を使用してすべてのラベルを 1 つの凡例に追加できます。

  • 行のリストを作成する両方の軸にプロットされたすべての線を表すオブジェクト。
  • 線オブジェクトに対応するラベルのリストを作成します。
  • 関数 legend を使用して、凡例に線とラベルを追加し、loc パラメータを渡します。凡例の位置を指定します。
<code class="python">import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# Add all lines and labels to a single legend
lns = lns1+lns2+lns3
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc=0)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.show()</code>

このコードは、主軸と副軸のすべてのラベルを含む単一の凡例を生成します。

以上がTwinx() を使用して副軸を持つプロットの凡例にラベルを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。