Python:matplotlibを使ったグラフ描写、ラベルや軸の調整

Python

ダウンロードしたCSVデータをもとにグラフを書いてみるプロジェクト。

今回は、グラフを見やすく描いてみることにしましょう。

この記事はこんな人におすすめ。

  • グラフの大きさを変えたい。
  • 目盛りラベルテキストの調整。
  • 複数のデータを一つのグラフに描く。

プログラミング無料体験はこちら↓↓↓


グラフ描写の方法は、対話型インターフェイスと、オブジェクト型インターフェイスがあります。

対話型インターフェイスは、比較的簡単にグラフを書くことができますが、細かい調整はオブジェクト型インターフェイスが得意ですね。

自然科学でグラフを描写する場合は、オブジェクト型インターフェイスがいいのではないかと思います。

オブジェクト型インターフェイスの使い方は現在模索中ですので、ここでは対話型インターフェイスを使ってグラフを描写してみましょう。

グラフのサイズを変える

Pythonでグラフを描写する際、グラフのサイズはこちらが指定しない限り、pyhtonに勝手に決められます。

下のような感じ。

from pylab import plot, show 
plot(df_f['1年'])

python 目盛表示不可能

このグラフを大きくするためには、一行記述を加える必要があります。

pylab.figure(figsize=(20, 10))

この記述を加えるだけで、グラフサイズを簡単に変えることができますね。

from pylab import plot, show
import pylab
pylab.figure(figsize=(20, 10))
plot(df_f['1年'])

一行加えてプログラムを実行すると、下の表のように大きさが変わりますね。
1年目盛表示不能 拡大グラフ

Python: 目盛ラベルのテキスト調整

さて、お気づきかもしれませんが、x軸の目盛ラベルがマーカーで塗りつぶしたようになっていますね。

このようになる原因は、目盛ラベルのテキストが長すぎることで隣と重なってしまい、マーカーで塗りつぶしたようになってしまうのです。

このままでは、見栄えが良くないのでテキストの調整を行ってみましょう。

目盛ラベルの調整に使うのが、以下の記述のように「np.arange関数」を使う。

plt.xticks(np.arange(0, 11925, step=220))

カッコ内(0, 11925, step=220)の意味は、最初のデータ「0番目」から最後のデータ「11925番目」までを使用し、間隔は「220間隔」で表示するという意味。

目盛のデータ数があまりにも多い時に使うことで、グラフをすっきりと見せることができます。

from pylab import plot, show
import pylab
import numpy as np
from matplotlib import pyplot as plt
pylab.figure(figsize=(20, 10))
plt.xticks(np.arange(0, 11925, step=220))
plot(df_f['1年'])

上のプログラムを実行することで、今までマーカーのようだった部分が何となく文字のように見えてきました。

1年目盛表示刻み拡大グラフ

しかし、まだまだ見栄えが悪いです。

原因は、x軸の目盛ラベル表記が長いんですね。

そこで、目盛ラベルを回転させて、よくわかるように表記しましょう。

目盛ラベルを回転させる記述には「plt.xticks(rotation=~)」を使います。

このグラフの場合、目盛ラベルを90度回転させたいので、記述は以下のようになります。

plt.xticks(rotation=90)

これを記述して、プログラムを実行してみましょう。

ついでに、グラフのタイトルを以下の記述で表記。

plt.title('日本の国債金利の推移', fontsize=18, fontname='MS Gothic')

x軸のラベルは以下のとおり。

plt.xlabel("基準日", fontsize=18, fontname='MS Gothic')

y軸のラベルは以下。

plt.ylabel("金利 (%)", fontsize=18, fontname='MS Gothic')

ラベルを指定し「fontsize=~」で文字の大きさを指定。

「fontname=~」で日本語でも表記できるようにします。

これをやっておかないと、日本語が全て文字化けしていわゆる「豆腐」状態になってしまいます。

最後に、グラフ内に枠線を「plt.grid()」を使って引いていきます。

これらを全部まとめて、以下のプログラムのように実行してみましょう。

from matplotlib import pyplot as plt
pylab.figure(figsize=(20, 10))
plt.xticks(np.arange(0, 11925, step=200))
plt.xticks(rotation=90)
plt.title('日本の国債金利の推移', fontsize=18, fontname='MS Gothic')
plt.xlabel("基準日", fontsize=18, fontname='MS Gothic')
plt.ylabel("金利 (%)", fontsize=18,  fontname='MS Gothic')
plt.grid()
plot(df_f['1年'])

x軸のラベルが90度回転されて、いい感じにできてますね。

グラフタイトル、そしてx軸、y軸のラベルも表記され、だいぶ見栄えが良くなりました。

1年タイトルX軸y軸ラベル入り

複数の行を一つのグラフに描写する

では、複数の行をグラフに描いてみましょう。

使うのは、1年、5年、10年、30年の国債金利です。

といっても難しいことはなく、以下の記述を行うだけ。

plt.plot(df_f['1年'], label="1年", color="red") 
plt.plot(df_f['5年'], label="5年", color="orange") 
plt.plot(df_f['10年'], label="10年", color="blue") 
plt.plot(df_f['30年'], label="30年", color="green")

さらに、凡例を加えるため「plt.legend」を使います。

ただしこのままでは、凡例が豆腐になってしまうので「plt.legend (prop={“family”:“MS Gothic”})」で日本語フォントを指定してあげます。

さらに、各線の色を指定してあげましょう。

plt.plot(df_f['1年'], label="1年", color="red") 
plt.plot(df_f['5年'], label="5年", color="orange") 
plt.plot(df_f['10年'], label="10年", color="blue") 
plt.plot(df_f['30年'], label="30年", color="green")

1年は赤、5年はオレンジ、10年が青、30年が緑です。

これらを全部合わせてプログラムを実行してみました。

from matplotlib import pyplot as plt
import pylab
pylab.figure(figsize=(20, 10))
plt.xticks(np.arange(0, 11925, step=200))
plt.xticks(rotation=90)
plt.title('日本の国債金利の推移', fontsize=18, fontname='MS Gothic')
plt.xlabel("基準日", fontsize=18, fontname='MS Gothic')
plt.ylabel("金利 (%)", fontsize=18,  fontname='MS Gothic')
plt.plot(df_f['1年'], label="1年", color="red")
plt.plot(df_f['5年'], label="5年", color="orange")
plt.plot(df_f['10年'], label="10年", color="blue")
plt.plot(df_f['30年'], label="30年", color="green")
plt.legend(prop={"family":"MS Gothic"})
plt.grid()
plt.show()

結果は以下のようになります。

多年タイトルx軸y軸ラベル入り

何とか人に見せられるだけのグラフにはなりましたね。

では、次からはもっと別のデータをグラフ化、分析などを行ってみましょう。

追記

日本語表記をするために、グラフタイトル、x軸、y軸すべてに「fontname = ‘MS Gothic’」と入れていました。

しかし以下の記述を一行入れるだけで、全て日本語対応になります。

mpl.rcParams['font.family'] = 'MS Gothic'

調整したいパラメーターを定義し、変更したプログラムが以下。

from matplotlib import pyplot as plt
import pylab
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.family'] = 'MS Gothic' #フォントファミリーをMS Gothicに定義
pylab.figure(figsize=(20, 10))
plt.xticks(np.arange(0, 11925, step=200))
plt.xticks(rotation=90)
plt.title('日本の国債金利の推移', fontsize=18)
plt.xlabel("基準日", fontsize=18)
plt.ylabel("金利 (%)", fontsize=18)
plt.plot(df_f['1年'], label="1年", color="red")
plt.plot(df_f['5年'], label="5年", color="orange")
plt.plot(df_f['10年'], label="10年", color="blue")
plt.plot(df_f['30年'], label="30年", color="green")
plt.legend()
plt.grid()
plt.show()

出力したグラフがこちら。

最初に描いたグラフと全く同じものができました。

プログラミング無料体験はこちら↓↓↓



関連記事↓↓↓

Python でデータ分析:DataFrameの整理とデータ型の変換
Python でCSVファイルを読みこんでもこのままでは分析に使えないので、データの整形が必要になります。この記事は以下のような人におすすめ。 pandas で不要なヘダーの削除方法を知りたい numpyを使ってセル内の不要な記号を消し
pythonでデータ分析:CSVファイルの読み込みと表示
pythonを使ったデータ分析をしてみたいということで、基本的なところからやっていこうと思います。まず必要なのが、データをpythonで読み込むことですね。そのためCSV形式のデータが必要ですが、ネットを探せば簡単に見つかるので好きなデータ

コメント

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