散布図にfigsize, title, xlable, ylable, tight_layout等のオプションを追加する
行9ではmatplotlibのfigure()メソッドで図のサイズを設定しています。
行11-13ではmatplotlibのscatter()メソッドの引数に「s, c, edgecolor, linewidth, alpha」のオプションを追加しています。
行15ではmatplotlibのtitle()メソッドで図のタイトルを設定しています。
行16-17ではmatplotlibのxlabel(), ylabel()メソッドで図のX軸とY軸のラベルを設定しています。
行19ではmatplotlibのtight_layout()メソッドで図が綺麗に表示されるようにしています。
この指定はNOTE-PCを使うときに効果があります。
# Add options (style, title, xlabel, ylabel, tight_layout,...)
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
cases_x = [10, 20, 5, 90, 20, 60, 30, 80, 20]
deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
plt.figure(figsize=(12,5))
plt.scatter(cases_x, deaths_y,
s=100, c='green', edgecolor='black',
linewidth=1, alpha=0.75)
plt.title('感染者・重症者散布図')
plt.xlabel('感染者')
plt.ylabel('重症者')
plt.tight_layout()
plt.show()
# %%
図2は実行結果です。
図にタイトル、X軸、Y軸のラベルが表示されています。
また、ドットの色が「緑」に変わってサイズが大きくなっています。
さらにドットの周りが「黒」の線で囲まれています。
「alpha」の効果は目視できませんが適用されています。
散布図にsize, colors, color mapを追加する
行9では散布図に表示するドットのサイズを定義しています。
値が大きくなればドットのサイズも大きくなります。
行11ではドットの色のスケールを定義しています。
値が大きくなれば色の濃淡が濃くなります。
行15-17ではmatplotlibのscatter()メソッドの引数に「s, c, cmap」のオプションを追加しています。
行19ではmatplotlibのcolorbar()メソッドで図の右端にカラーバー表示させています。
行20ではcolorbarのset_label()メソッドでカラーバーのラベルを設定しています。
# Add Size, Colors, Color Map
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
cases_x = [10, 20, 5, 90, 20, 60, 30, 80, 20]
deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sizes = [10, 20, 30, 40, 50, 60, 70, 80, 90]
colors = [1, 2, 3, 4, 5, 6, 7, 8, 9]
plt.figure(figsize=(12,5))
plt.scatter(cases_x, deaths_y,
s=sizes, c=colors, cmap='Greens',
edgecolor='black', linewidth=1, alpha=0.75)
cbar = plt.colorbar()
cbar.set_label('重症度')
plt.title('感染者・重症者散布図')
plt.xlabel('感染者')
plt.ylabel('重症者')
plt.tight_layout()
plt.show()
# %%
図3は実行結果です。図の右端にカラーバーとラベルが表示されています。
ここで解説したコードをまとめて掲載
最後にここで解説したすべてのコードをまとめて掲載しましたので参考にしてください。
# Article016_Matplotlib Scatter Chart Part1.py
# %%
# Import the necessary libraries
import pandas as pd
from pandas.core.frame import DataFrame
import pandas_datareader.data as web # pip install pandas_datareader
import matplotlib.pyplot as plt
import matplotlib.style as style
import numpy as np
import warnings
warnings.simplefilter('ignore')
# %%
# Draw a scatter chart (no options)
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
cases_x = [10, 20, 5, 90, 20, 60, 30, 80, 20]
deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# cases_x = [10, 20, 30, 40, 50, 60, 70, 80, 90]
# deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
plt.scatter(cases_x, deaths_y)
plt.show()
# %%
# Add options (style, title, xlabel, ylabel, tight_layout,...)
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
cases_x = [10, 20, 5, 90, 20, 60, 30, 80, 20]
deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
plt.figure(figsize=(12,5))
plt.scatter(cases_x, deaths_y,
s=100, c='green', edgecolor='black', linewidth=1, alpha=0.75)
plt.title('感染者・重症者散布図')
plt.xlabel('感染者')
plt.ylabel('重症者')
plt.tight_layout()
plt.show()
# %%
# Add Size, Colors, Color Map, Alpha,...
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
cases_x = [10, 20, 5, 90, 20, 60, 30, 80, 20]
deaths_y = [1, 2, 3, 4, 5, 6, 7, 8, 9]
sizes = [10, 20, 30, 40, 50, 60, 70, 80, 90]
colors = [1, 2, 3, 4, 5, 6, 7, 8, 9]
plt.figure(figsize=(12,5))
plt.scatter(cases_x, deaths_y, s=sizes,
c=colors, cmap='Greens', edgecolor='black',
linewidth=1, alpha=0.75)
cbar = plt.colorbar()
cbar.set_label('重症度')
plt.title('感染者・重症者散布図')
plt.xlabel('感染者')
plt.ylabel('重症者')
plt.tight_layout()
plt.show()
# %%