Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibでマスクされた散布図の点をプロットし、マスク領域の境界線を追加する方法

MatplotlibとNumPyのマスク配列(masked array)機能を組み合わせると、条件に応じて散布図のデータ点を分類し、それぞれ異なるスタイルで可視化できます。さらに、plot()メソッドで曲線を描くことで、マスクされた領域の境界を視覚的に示すことが可能です。

実装の手順

  • figureサイズを設定し、サブプロット間および周囲の余白を自動調整します。
  • NumPyを使って Nr0xyareacrarea1area2 の各データを作成します。
  • scatter()メソッドで x と y のデータ点をプロットします。
  • マスクされた領域の境界を示すため、plot()メソッドで曲線を描画します。
  • show()メソッドで図を表示します。

コード例

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

N = 100
r0 = 0.6
x = 0.9 * np.random.rand(N)
y = 0.9 * np.random.rand(N)
area = (20 * np.random.rand(N))**2
c = np.sqrt(area)

r = np.sqrt(x ** 2 + y ** 2)
area1 = np.ma.masked_where(r < r0, area)
area2 = np.ma.masked_where(r >= r0, area)
plt.scatter(x, y, s=area1, marker='^', c=c)
plt.scatter(x, y, s=area2, marker='o', c=c)
theta = np.arange(0, np.pi / 2, 0.01)
plt.plot(r0 * np.cos(theta), r0 * np.sin(theta))

plt.show()

コードの解説

このコードでは、まず原点から各データ点までの距離 r を計算し、np.ma.masked_where() を使ってデータを2つのグループに分割しています。r < r0 の点は三角形マーカー('^')、r >= r0 の点は円形マーカー('o')で描画され、マークのサイズは area、色はその平方根 c に基づいて変化します。

最後に、半径 r0 の円弧を第1象限の範囲で plot() により描画することで、2つの領域の境界線が明確になり、どの点がマスク対象かひと目でわかるグラフになります。

出力結果

Matplotlibでマスクされた散布図の点をプロットし、マスク領域の境界線を追加する方法

  1. MatplotlibのSeabornラインプロットで破線を描画する方法

    Seabornのラインプロット(lineplot)で破線を描画したい場合は、lineplot()メソッドの引数にlinestyle=dashedを指定するだけで実現できます。この設定により、データポイントを結ぶ線が破線スタイルで表示され、グラフの視認性やデザイン性を高めることができます。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用して、x座標とy座標のデータポイントを作成します。lineplot()メソッドの引数にx・yのデータポイントとlinestyle=dashedを渡して、破線のラインプロットを描画します。図を表示するには、show(

  2. Matplotlibで折れ線グラフをアニメーション化する方法を徹底解説

    Matplotlibでは、FuncAnimationを活用することで、折れ線グラフに動きのあるアニメーション効果を簡単に加えることができます。本記事では、基本的な手順と実際に動作するサンプルコードを交えながら、その方法をわかりやすく解説します。折れ線グラフをアニメーション化する基本手順subplots()メソッドを使用して、図(figure)とサブプロットを作成します。x軸・y軸それぞれの表示範囲(スケール)を設定します。NumPyを使って、xおよびtのデータ点を生成します。座標ベクトルからmeshgrid()で座標行列X2とT2を作成します。plot()メソッドでxとFのデータを使い、折れ線