Matplotlibでクローバーマーカーを使って散布図をプロットする方法
Matplotlibでは、TeX数式記号を利用することで、通常のマーカー('o'や'^'など)以外にも、クローバー(♣)のような特殊なシンボルを散布図のマーカーとして使用できます。この記事では、scatter()メソッドと$\clubsuit$記号を組み合わせて、クローバーマーカーの散布図を作成する手順を解説します。
実装の手順
- figure.figsizeで図のサイズを設定し、figure.autolayoutでサブプロット間および周囲の余白を自動調整します。
- numpyを使ってx、yのデータポイントと、マーカーサイズ用の配列sを作成します。
- scatter()メソッドを使って散布図を描画します。このとき、marker引数にTeX記号
$\clubsuit$を指定すると、クローバー形のマーカーになります。 - xlabel()とylabel()でX軸・Y軸のラベルを設定します。
- legend()メソッドでプロットの左上に凡例を配置します。
- 最後にshow()メソッドを呼び出して図を表示します。
サンプルコード
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
x = np.arange(0.0, 50.0, 2.0)
y = x ** 1.3 + np.random.rand(*x.shape) * 30.0
s = np.random.rand(*x.shape) * 800 + 500
plt.scatter(x, y, s, c=x, alpha=0.5, marker=r'$\clubsuit$',
label="Legend", cmap="plasma")
plt.xlabel("X-Axis")
plt.ylabel("Y-Axis")
plt.legend(loc='upper left')
plt.show()コードのポイント
このコードの重要なポイントは以下の通りです。
- marker=r'$\clubsuit$':MatplotlibはTeX記法をサポートしているため、
$\clubsuit$(トランプのクラブ=クローバー記号)を文字列として渡すことで、クローバー形のマーカーが描画されます。同様に$\heartsuit$(ハート)や$\spadesuit$(スペード)なども利用可能です。 - s:各マーカーのサイズを個別に指定する配列です。ランダムな値を与えることで、大きさの異なるクローバーが表示されます。
- c=x, cmap="plasma":x座標の値に応じてマーカーの色が「plasma」カラーマップで変化します。
- alpha=0.5:マーカーを半透明にすることで、重なった部分も見やすくなります。
出力結果
上記のコードを実行すると、サイズと色が異なる半透明のクローバーマーカーが散布図上に表示され、左上には凡例が配置されたグラフが出力されます。
-
Matplotlibでサンプルデータから確率密度関数をプロットする方法
概要サンプルデータから確率密度関数をプロットするには、NumPyでx軸・y軸のデータポイントを生成し、Matplotlibのplot()メソッドで描画するのが一般的です。ここでは、ガウス関数(正規分布に似た釣り鐘型の曲線)を例に、その基本的な手順をわかりやすく解説します。手順numpyを使ってxとpのデータポイントを作成します。plot()メソッドでxとpのデータポイントをプロットします。xlim()メソッドでX軸の表示範囲を設定します。図を表示するにはshow()メソッドを使用します。コード例import numpy as np from matplotlib import pyplot a
-
Matplotlibでnumpyのdatetime64型の時系列データをプロットする方法
PythonのMatplotlibを使って時系列データをグラフ化する方法を解説します。日付や時刻のデータ(datetime64型など)は、そのままplot()メソッドに渡すだけで自動的に軸に反映されるため、非常に簡単です。基本的な手順numpyを使ってx(日時)とy(数値)のデータを作成する。plot()メソッドで作成したxとyをプロットする。show()メソッドで図を表示する。サンプルコードimport matplotlib.pyplot as plt import datetime import numpy as np plt.rcParams[figure.figsize] = [7.