-
Pythonのプラグラム内で用意したデータを使って簡単な線グラフを作成する
Visual Studio Codeを起動したら以下のコードを入力して実行[Ctrl+Enter]します。
行2-8ではPythonのライブラリを取り込んでいます。
行9では警告メッセージが表示されないように抑止しています。
行13ではmatplotlibで日本語が使えるように日本語のフォント「Meiryo」を設定しています。
行15-16では線グラフのX軸、Y軸の値を定義しています。
行18ではmatplotlibのplot()メソッドで線グラフを作成しています。
行21のコメント「# %%」を入力してインタラクティブ環境に切り換えることを忘れないでください。
# 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 single line chart (Tokyo)
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo'
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
plt.plot(date_x, tokyo_y)
plt.show()
図1は実行結果です。matplotlibはX軸、Y軸の値を指定するだけで簡単に線グラフが作成できます。
-
線グラフにオプションを追加する
行6ではmatplotlibのfigure()メソッドで図のサイズを設定しています。
行10ではX軸のラベル(日付)が斜めに表示されるようにしています。
行12ではY軸のラベルを設定しています。
行13ではグラフのタイトルを設定しています。
行14では凡例「東京」が中央の左端に表示されるように設定しています。
#Add options (figsize, xticks, label, ylabel, title, legend)
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.xticks(rotation=45)
#plt.xlabel('日付(年/月)')
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.show()
図2は実行結果です。線グラフにタイトル、凡例、Y軸のラベルが表示されています。
また、X軸の日付が斜めに表示されています。
-
3本の線グラフを作成する
行6-7では大阪と埼玉のY軸の値を追加しています。
行12-13では大阪と埼玉の線グラフを作成しています。
行19ではmatplotlibのgrid()メソッドでグラフにグリッドを追加しています。
行20ではmatplotlibのtight_layout()メソッドでNOTE-PCなどを使用した場合にもグラフが綺麗に表示されるようにしています。
# Add osaka, saitama
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
osaka_y = [80,100,110,230,290,220,150,300,280]
saitama_y = [70,100,200,250,260,200,150,330,280]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.plot(date_x, osaka_y, label='大阪')
plt.plot(date_x, saitama_y, label='埼玉')
plt.xticks(rotation=45)
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.grid(True)
plt.tight_layout()
plt.show()
図3は実行結果です。線グラフに大阪と埼玉が追加されました。
さらに図にグリッドが表示されています。
-
線グラフにスタイルを適用する
行3ではmatplotlibのstyle.use()メソッドでスタイル「fivethirtyeight」を適用させています。
図を保存するときは行21のコメントを外してください。
# Add style
plt.style.use('fivethirtyeight') # plt.style.available
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
osaka_y = [80,100,110,230,290,220,150,300,280]
saitama_y = [70,100,200,250,260,200,150,330,280]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.plot(date_x, osaka_y, label='大阪')
plt.plot(date_x, saitama_y, label='埼玉')
plt.xticks(rotation=45)
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.tight_layout()
#plt.savefig('plot.png')
plt.show()
図4-1は実行結果です。線グラフに「fivethirtyeight」のスタイルが適用されました。
スタイルの一覧を表示するにはインタラクティブ・ウィンドウから「plt.style.available」を入力します。
図4-2は「plt.style.available」の実行結果です。
スタイルを「'ggplot'」などに変更して色々試してみてください。
-
ここで解説したコードをまとめて掲載
最後にここで解説したすべてのコードをまとめて掲載しましたので参考にしてください。
# Mapplotlib Line Chart Part1
# %%
# 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 single line chart (Tokyo)
# Set the font to support Japanese
plt.rcParams['font.family'] = 'Meiryo' # Meiryo, Yu Gothic
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
plt.plot(date_x, tokyo_y)
plt.show()
# %%
# Add figsize, xticks, label, ylabel, title, legend
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.xticks(rotation=45)
#plt.xlabel('日付(年/月)')
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.show()
# %%
# Add osaka, saitama
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
osaka_y = [80,100,110,230,290,220,150,300,280]
saitama_y = [70,100,200,250,260,200,150,330,280]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.plot(date_x, osaka_y, label='大阪')
plt.plot(date_x, saitama_y, label='埼玉')
plt.xticks(rotation=45)
#plt.xlabel('日付(年/月)')
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.grid(True)
plt.tight_layout()
plt.show()
# %%
# Add style
plt.style.use('fivethirtyeight') # 'fivethirtyeight' 'ggplot'
#plt.style.use('ggplot') # 'fivethirtyeight' 'ggplot'
date_x = ['2021/1','2021/2','2021/3','2021/4','2021/5','2021/6','2021/7','2021/8','2021/9']
tokyo_y = [100,120,130,250,300,250,180,350,300]
osaka_y = [80,100,110,230,290,220,150,300,280]
saitama_y = [70,100,200,250,260,200,150,330,280]
plt.figure(figsize=(12,5))
plt.plot(date_x, tokyo_y, label='東京')
plt.plot(date_x, osaka_y, label='大阪')
plt.plot(date_x, saitama_y, label='埼玉')
plt.xticks(rotation=45)
#plt.xlabel('日付(年/月)')
plt.ylabel('感染者数')
plt.title('COVID-19 新規感染者')
plt.legend(loc='upper left')
plt.tight_layout()
#plt.savefig('plot.png')
plt.show()
# %%