Pylab(Matplotlib)の散布図で点ごとに異なるマーカーを使う方法
Pylab(Pyplot)の散布図において、各データポイントに異なるマーカーを使用したい場合は、以下の手順に従うことで実現できます。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- サンプルデータの個数を表す変数 N を初期化します。
- x 軸・y 軸用のランダムなデータポイントを生成します。
- 使用するマーカーの種類をリストとして作成します。
- zip() を使って x、y、マーカーのリストをまとめます。
- zip オブジェクトを反復処理しながら、それぞれ異なるマーカーでデータポイントをプロットします。
- 最後に show() メソッドを呼び出して図を表示します。
サンプルコード
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True N = 10 x = np.random.rand(N) y = np.random.rand(N) markers = ["d", "v", "s", "*", "^", "d", "v", "s", "*", "^"] for xp, yp, m in zip(x, y, markers): plt.scatter(xp, yp, marker=m, s=50) plt.show()
実行結果


コードのポイント
この手法の鍵となるのは zip() 関数です。x 座標・y 座標・マーカーの3つのリストを同時に反復処理することで、plt.scatter() を1点ずつ呼び出し、そのたびに異なる marker 引数を渡せるようになります。
なお、Matplotlib で利用できる主なマーカーには以下のようなものがあります。
- 'o':円形
- 's':正方形
- 'd':ひし形
- '^':上向き三角形
- 'v':下向き三角形
- '*':星形
マーカーのリストの長さはデータポイント数 N 以上である必要があるため、実際にコードを書く際は点数に合わせてマーカーを用意するか、markers * N のようにリストを繰り返して対応すると便利です。
-
matplotlibのFuncAnimationを使ってPythonで等高線図をアニメーション化する方法
Pythonのmatplotlibでは、FuncAnimationクラスを利用することで、等高線図(コンタープロット)を簡単にアニメーション化できます。時間とともに変化するデータを視覚的に表現したい場合に非常に便利な手法です。 等高線図をアニメーション化する手順 10×10×8の形状を持つランダムなデータを作成します。 subplots()メソッドを使って、図(Figure)とサブプロット(Axes)を作成します。 FuncAnimation()クラスを使い、指定した関数*func*を繰り返し呼び出すことでアニメーションを生成します。 フレームごとに等高線の値を更新できるよう、animat
-
Matplotlibでhist2dプロットにカラーバーを追加する方法
Matplotlibのhist2dプロット(2次元ヒストグラム)にカラーバーを追加するには、colorbar()メソッドの引数にスカラーマッピング可能なオブジェクト(ScalarMappable)を渡します。 実装手順 NumPyを使ってxとyのデータポイントを作成します。 subplots()メソッドを使って、図とサブプロットを作成します。 hist2d()メソッドを使って、2次元ヒストグラムを描画します。 hist2dから返されるスカラーマッピングオブジェクトをもとに、colorbar()でカラーバーを作成します。 show()メソッドを使って、図を表示します。 コード例 import