Matplotlibです。散布図のマーカサイズを変更する

Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。Matplotlib の人気の多くは、そのカスタマイズオプションによるもので、オブジェクトの階層構造からほぼすべての要素を微調整することができます。

このチュートリアルでは、Matplotlib の散布図でマーカーの大きさを変更する方法を見ていきます。

インポートデータ

World Happinessのデータセットを使って、Happiness Scoreを様々な特徴と比較し、何が世界の幸福感に影響を与えるかを見ていきます。

import pandas as pd


df = pd.read_csv('worldHappiness2019.csv')


そして、このデータセットの項目を表すために使われるマーカーの大きさを簡単に操作することができる。

Matplotlib の散布図におけるマーカーサイズの変更

まず、一人当たりGDPに対して寛大さのスコアをプロットしてみましょう。

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv('worldHappiness2019.csv')


fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'])
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")


plt.show()


この結果は

さて、その国の住民の幸福度に基づいて、各マーカーのサイズを大きくしたいとします。幸福度のスコアは df から直接取得したリストなので、他のリストでも動作させることができます。

マーカーの大きさを変更するには、 scatter() 関数の s 引数を使用します。これは plot() 関数の markersize 引数として使用されます。

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv('worldHappiness2019.csv')


fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = df['Score']*25)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")


plt.show()


また、リストの各要素の値を任意の25倍しています。これは、リストが 0..1 からランク付けされているためです。これは、元の値で使用すると、本当に小さなマーカーが生成されます。

この結果、今度は

あるいは、もっといいのは、どうせ似たような値なのだから、乱暴にすべてを25倍する代わりに、次のようにすることだ。

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv('worldHappiness2019.csv')


size = df['Score'].to_numpy()
s = [3*s**2 for s in size]


fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = s)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")


plt.show()


sのリストがxy` と同じ長さであることは重要です。このリストが短かったり長かったりすると、コードが壊れてしまいます。

ここでは、 Score カラムから値を抽出し、スケーリングして、散布図にサイズを適用しています。

Matplotlib の散布図におけるグローバルマーカーサイズの設定

もし、マーカーサイズを変数から切り離し、散布図に標準的でグローバルなマーカーサイズを設定したい場合、単純に s に単一の値を渡せばよいでしょう。

import matplotlib.pyplot as plt
import pandas as pd


df = pd.read_csv('worldHappiness2019.csv')


fig, ax = plt.subplots(figsize=(10, 6))
ax.scatter(x = df['GDP per capita'], y = df['Generosity'], s = 100)
plt.xlabel("GDP per Capita")
plt.ylabel("Generosity Score")


plt.show()


この結果は次のようになります。

結論

このチュートリアルでは、Matplotlib の散布図でマーカーのサイズを変更する方法について説明しました。

もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonでのデータ可視化に関する書籍の束をチェックしてみてください。

Pythonによるデータ可視化

データビジュアライゼーションで危険な存在になる

30日間無条件返金保証

初級から上級まで

定期的に無料で更新(最新更新は2021年4月)

ボーナスリソースやガイドを更新

Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。

本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要
があることすべてを教えてくれる詳細なガイドです。

Pythonによるデータ可視化」は、Pythonの初級~中級開発者向けの書籍で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornなどのコアなプロットライブラリ、そしてAltairなどの宣言的・実験的ライブラリの活用方法までを案内しています。具体的には、11章にわたって、9つのPythonライブラリを取り上げています。Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。

データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。

タイトルとURLをコピーしました