web-dev-qa-db-ja.com

matplotlibのプロットで各サブプロットのラベルを設定するにはどうすればよいですか?

データセットに4つの機能があり、毎回2つの機能を使用して散布図をプロットしているとしましょう。各プロットに個別にラベルを付けたいと思います。

_fig,axes=plt.subplots(ncols=2,figsize=(10,8))
axes[0].scatter(x1,x2],marker="o",color="r")
axes[1].scatter(x3,x4,marker="x",color="k")
axes[0].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1",ylabel="Exam score-2")
axes[0].set_label("Admitted")
axes[1].set_label("Not-Admitted")
axes.legend()
plt.show()
_

enter image description here

ここでは2つの散布図が表示されますが、ラベルは表示されません。最初のプロットのラベルとしてadmittedを、2番目の散布図のnot-admittedを確認します。

plt.legend()を使用してラベルを付けることはできますが、作成済みのプロットは取得できません。

3

散布ではなく、軸のラベルを設定しています。

プロットの凡例エントリを取得する最も便利な方法は、label引数を使用することです。

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.Rand(2,23)

fig,axes=plt.subplots(ncols=2)
axes[0].scatter(x,y, marker="o", color="r", label="Admitted")
axes[1].scatter(x,y, marker="x", color="k", label="Not-Admitted")
axes[0].set(xlabel="Exam score-1", ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1", ylabel="Exam score-2")

axes[0].legend()
axes[1].legend()
plt.show()

スキャッターの作成後、凡例を作成する前にラベルを設定する場合は、PathCollectionによって返されるscatterに対してset_labelを使用できます。

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.Rand(2,23)

fig,axes=plt.subplots(ncols=2)
sc1 = axes[0].scatter(x,y, marker="o", color="r")
sc2 = axes[1].scatter(x,y, marker="x", color="k")
axes[0].set(xlabel="Exam score-1", ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1", ylabel="Exam score-2")

sc1.set_label("Admitted")
sc2.set_label("Not-Admitted")

axes[0].legend()
axes[1].legend()
plt.show()

最後に、凡例呼び出し内でラベルを設定できます。

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.Rand(2,23)

fig,axes=plt.subplots(ncols=2)
sc1 = axes[0].scatter(x,y, marker="o", color="r")
sc2 = axes[1].scatter(x,y, marker="x", color="k")
axes[0].set(xlabel="Exam score-1", ylabel="Exam score-2")
axes[1].set(xlabel="Exam score-1", ylabel="Exam score-2")

axes[0].legend([sc1], ["Admitted"])
axes[1].legend([sc2], ["Not-Admitted"])
plt.show()

3つのケースすべてで、結果は次のようになります。

enter image description here