はじめに

Matplotlib 散布図(Scatter Plots)のラボへようこそ!散布図はデータ可視化における基本的なツールであり、通常、データセットの 2 つの変数の値を表示するために使用されます。変数間の関係性や相関を観察するのに非常に適しています。

このラボでは、Python の Matplotlib ライブラリを使用して散布図を作成します。以下のことを学びます:

  • NumPy を使用してデータ配列を生成する。
  • plt.scatter()で基本的な散布図を作成する。
  • マーカーのサイズや色を含む、プロットの外観をカスタマイズする。
  • 可読性を向上させるためにグリッドを追加する。

すべての作業は WebIDE 環境で行います。ファイルに Python コードを記述し、ターミナルから実行します。この環境は非インタラクティブであるため、plt.show()で表示する代わりに、plt.savefig()を使用してプロットを画像ファイルに保存します。

始めましょう!

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 90%です。学習者から 100% の好評価を得ています。

x および y データ配列の生成

このステップでは、散布図に使用するデータを作成します。散布図には、少なくとも 2 つの同じ長さのデータ配列が必要です。1 つは x 軸の座標用、もう 1 つは y 軸の座標用です。Python における数値演算の標準ライブラリであるNumPyを使用します。

まず、WebIDE の左側パネルにあるファイルエクスプローラーからmain.pyファイルを開きます。このファイルに、このラボのすべてのコードを記述します。

次に、NumPyをインポートし、2 つの簡単なデータ配列を作成するために、以下のコードをmain.pyに追加します。

import numpy as np

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

コードの内訳を見てみましょう。

  • import numpy as np: この行は NumPy ライブラリをインポートし、慣例的なエイリアスnpを付けます。
  • x = np.array([...]): これは、水平軸のデータポイントを含むxという名前の NumPy 配列を作成します。
  • y = np.array([...]): これは、垂直軸のデータポイントを含むyという名前の NumPy 配列を作成します。

これで、main.pyファイルにはこのコードが含まれているはずです。次のステップでは、このデータを使用して最初のプロットを作成します。

plt.scatter(x, y) を使用した散布図のプロット

このステップでは、生成したデータを使用して基本的な散布図を作成します。プロット作成のためのシンプルなインターフェースを提供するmatplotlib.pyplotモジュールを使用します。

まず、matplotlib.pyplotをインポートする必要があります。次に、plt.scatter()関数を使用してプロットを作成できます。最後に、プロットをファイルに保存する必要があります。はじめに述べたように、この環境ではplt.show()を使用してプロットを直接表示することはできません。代わりに、plt.savefig()を使用して画像として保存します。

以下のコードでmain.pyファイルを更新してください。既存のコードの下に新しい行を追加します。

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

## Create scatter plot
plt.scatter(x, y)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot.png')

print("Scatter plot saved to scatter_plot.png")

コードの説明:

  • import matplotlib.pyplot as plt: プロットモジュールをインポートし、標準的なエイリアスpltを付けます。
  • plt.scatter(x, y): これが中心となる関数です。xy配列を受け取り、(x, y)値の各ペアを点としてプロットします。
  • plt.savefig('/home/labex/project/scatter_plot.png'): この関数は現在の図を~/projectディレクトリにあるscatter_plot.pngという名前のファイルに保存します。

次に、WebIDE 下部のターミナルからスクリプトを実行します。

python3 main.py

ターミナルには以下の出力が表示されるはずです。

Scatter plot saved to scatter_plot.png

scatter_plot.pngという新しいファイルが左側のファイルエクスプローラーに表示されます。それをダブルクリックして、最初の散布図を表示してください!

Scatter plot

s パラメータを使用したマーカーサイズのカスタマイズ

このステップでは、散布図のマーカー(点)のサイズをカスタマイズする方法を学びます。plt.scatter()関数には、マーカーサイズを制御するオプションパラメータsがあります。

単一の数値を指定してすべてのマーカーを同じサイズにすることも、数値の配列(xおよびyデータと同じ長さ)を指定して各マーカーに固有のサイズを指定することもできます。プロットをより面白くするために、後者の方法を試してみましょう。

main.pyファイルを変更します。sizes配列を作成し、plt.scatter()関数のsパラメータに渡します。

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])

## Create scatter plot with custom sizes
plt.scatter(x, y, s=sizes)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_sizes.png')

print("Scatter plot with custom sizes saved to scatter_plot_sizes.png")

更新されたコードでは、sizes配列を追加し、plt.scatter()の呼び出しをplt.scatter(x, y, s=sizes)に変更しました。これにより、各点はsizes配列の対応するサイズでプロットされます。

変更を確認するために、スクリプトを再度実行します。

python3 main.py

スクリプトが完了したら、scatter_plot_sizes.pngを開きます。マーカーのサイズが異なり、プロットがより視覚的に分かりやすくなっていることに気づくでしょう。

Scatter plot with custom sizes

c パラメータを使用したマーカー色の変更

このステップでは、マーカーの色をカスタマイズします。サイズと同様に、plt.scatter()関数のcパラメータを使用して色を制御できます。

単一の色名(例:「red」)を渡してすべてのマーカーを同じ色にするか、色の配列を渡して各マーカーに特定の色を指定することができます。ここでは、各点に固有の色を割り当ててみましょう。

colors配列を含め、それをcパラメータに渡すようにmain.pyファイルを更新してください。

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot with custom sizes and colors
plt.scatter(x, y, s=sizes, c=colors)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_colors.png')

print("Scatter plot with custom colors saved to scatter_plot_colors.png")

これで、色名を含むcolors配列を追加し、関数呼び出しをplt.scatter(x, y, s=sizes, c=colors)に更新しました。

ターミナルからスクリプトを実行します。

python3 main.py

もう一度scatter_plot_colors.pngを開きます。配列で定義したように、各点が異なるサイズと色を持つカラフルな散布図が表示されます。

Scatter plot with custom colors

plt.grid() を使用したグリッドの追加

この最終ステップでは、散布図にグリッドを追加します。グリッドを追加すると、軸上のデータポイントの値を読み取りやすくなります。

Matplotlib でグリッドを追加するのは非常に簡単です。プロットを保存する前に plt.grid() 関数を呼び出すだけです。デフォルトでは、plt.grid(True) がグリッドを表示します。

スクリプトにこれを追加しましょう。main.py を変更して plt.grid() の呼び出しを含めます。

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot
plt.scatter(x, y, s=sizes, c=colors)

## Add a grid
plt.grid(True)

## Save the plot to a file
plt.savefig('/home/labex/project/scatter_plot_grid.png')

print("Scatter plot with grid saved to scatter_plot_grid.png")

plt.savefig() の直前に plt.grid(True) を追加しました。これにより、Matplotlib はプロット上にグリッドを描画するようになります。

スクリプトの最終バージョンを実行します。

python3 main.py

これで、scatter_plot_grid.png 画像を確認してください。プロットの背景にグリッドが表示され、カスタマイズされた散布図が完成しました。

Scatter plot with grid

まとめ

実験お疲れ様でした!Matplotlib を使用した散布図の作成とカスタマイズの基本を習得しました。

この実験では、以下のことを実践しました。

  • NumPy を使用したプロット用データの生成。
  • plt.scatter() を使用した基本的な散布図の作成。
  • s パラメータを使用したマーカーサイズのカスタマイズ。
  • c パラメータを使用したマーカー色の変更。
  • plt.grid() を使用したプロットへのグリッドの追加。
  • plt.savefig() を使用したプロットのファイルへの保存。

これらは Python におけるデータ視覚化の必須スキルです。これで、データの関係性を探るための情報量が多く、視覚的に魅力的な散布図を作成できるようになりました。学習を続けるために、タイトルやラベルの追加、異なるマーカースタイルの使用、またはより高度な視覚化のためのカラーマップの適用などを探求することができます。