前提
以下のようなPandasのデータフレームがあったとします。
# pandasをimportしていること前提 # dfはpandas.DataFrame(100 rows × 3 columns) df.head()
y | x | f | |
---|---|---|---|
0 | 6 | 8.31 | C |
1 | 6 | 9.44 | C |
2 | 6 | 9.50 | T |
3 | 12 | 9.07 | C |
4 | 10 | 10.16 | T |
ここから列fのクラス(C/T)ごとに色分けした凡例付きの散布図を作成したい。
方法
以下の2行のコードで簡単に実現できます(Python 3.6で確認)。
import seaborn as sns sns.scatterplot(x='x', y='y', hue='f', data=df)
ラクですね。
同じことは、以下のようなコードでも実現できます*1。
import matplotlib.pyplot as plt fig, ax = plt.subplots() for name, group in df.groupby('f'): ax.plot(group.x, group.y, marker='o', linestyle='', ms=8, label=name) ax.legend() plt.show()
他にもplt.scatter()でx, yにクラスごとのデータを代入する方法など色々あるかと思いますが、拘りがなければseabornのscatterplot()が一番楽かと思います。
以上です。
コメント