機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【python】【matplotlib】【part3】グラフの種類とグラフの保存

matplotlibで使えるグラフを紹介(散布図、棒グラフ、ヒストグラム、箱ひげ図、円グラフ、テキスト表示)+グラフの保存

■はじめに

前回はmatplotlibでグラフを複数書く方法を紹介しました。

stjun.hatenablog.com

 今回はmatplotlibで使える主要なグラフを紹介します。

またグラフの保存方法も紹介します。

 

■コード

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as nr

#テストデータ
x=np.arange(0,21,0.1)
y=nr.rand(len(x))
#棒グラフ用のデータ
x_bar=[1,2,3,4,5]
y_bar=[0.5,3,1,2,0.1]

fig=plt.figure(figsize=(12,16))

#通常のグラフ
ax1=plt.subplot2grid((4,2),(0,0))
ax1.plot(x,y)
ax1.set_title('normal',fontsize=14)
ax1.set_ylabel('y [-]',fontsize=14)
ax1.set_xlabel('x [-]',fontsize=14)

#散布図
ax2=plt.subplot2grid((4,2),(0,1))
ax2.scatter(x,y)
ax2.set_title('scatter',fontsize=14)
ax2.set_ylabel('y [-]',fontsize=14)
ax2.set_xlabel('x [-]',fontsize=14)

#棒グラフ
ax3=plt.subplot2grid((4,2),(1,0))
ax3.bar(x_bar,y_bar,color='green')
ax3.set_title('bar',fontsize=14)
ax3.set_ylabel('y [-]',fontsize=14)
ax3.set_xlabel('x [-]',fontsize=14)

#棒グラフ(横向き)
ax4=plt.subplot2grid((4,2),(1,1))
ax4.barh(x_bar,y_bar)
ax4.set_title('barh',fontsize=14)
ax4.set_ylabel('y [-]',fontsize=14)
ax4.set_xlabel('x [-]',fontsize=14)

#ヒストグラム
ax5=plt.subplot2grid((4,2),(2,0))
ax5.hist(y,rwidth=0.8,bins=20)
ax5.set_title('histgram',fontsize=14)
ax5.set_ylabel('y [-]',fontsize=14)
ax5.set_xlabel('x [-]',fontsize=14)

#箱ひげ図
ax6=plt.subplot2grid((4,2),(2,1))
ax6.boxplot(y)
ax6.set_title('box',fontsize=14)
ax6.set_ylabel('y [-]',fontsize=14)
ax6.set_xlabel('x [-]',fontsize=14)

#円グラフ
label=['Canon','Nikon','Sony','FUJIFILM','olympus']
size=[30,30,20,10,10]
ax7=plt.subplot2grid((4,2),(3,0))
ax7.pie(size,labels=label,autopct='%.1f%%',explode=(0,0.2,0,0,0))
ax7.set_title('pie',fontsize=14)

#テキスト表示
ax8=plt.subplot2grid((4,2),(3,1))
ax8.text(1.5,2,'test',size=30,color='red')
ax8.set_title('text',fontsize=14)
ax8.set_xticks([i for i in range(5)])
ax8.set_yticks([i for i in range(5)])

#グラフの各種パラメータ
plt.tick_params(labelsize=12)#軸文字の大きさ
plt.subplots_adjust(wspace=0.3, hspace=0.5)#グラフ同士の余白

#グラフの保存
plt.savefig('save_fig.png',
           dpi=500,
           facecolor='white',
           edgecolor='k')

plt.show()

実行すると以下の画像が保存されます。

f:id:stjun:20191027145622p:plain

■買って良かったもの紹介

 今回紹介したmatplotlib以外にもpandasやBokehなどのモジュールの使い方が書かれている本です。

公式リファレンス等もありますし、ネットで探せばいくらでもモジュールの使い方・書き方は見つかりますが、一冊くらいこのような本を手元に持っておくと便利です。

 

■説明

これまでグラフを書きたい時は、

plot(x,y)

のように書いていました。

それが例えば散布図だと,

scatter(x,y)

になるだけです。

ただ「色を変えたい」、「線を太くしたい」といった細かい部分の設定もできます。

例えば円グラフですが、以下のように書いています。

ax7.pie(size,labels=label,autopct='%.1f%%',explode=(0,0.2,0,0,0))

autopctは割合の数字(OO%)を表示するためのオプションで、explodeは扇形の一部をどれだけ離すか(画像ではNikonが円グラフから少し離れています)を設定するオプションになります。

詳しい内容は後日説明する予定ですが、公式リファレンス等で調べて頂くとすぐに見つかると思います。

 

グラフの保存については以下になります。

plt.savefig('save_fig.png', dpi=500, facecolor='white', edgecolor='k')

savefigを使います。'save_fig.png'はファイルの名前と拡張子になります。

dpiは解像度,facecolorは背景色、edgecolorは枠線の色になります。

 

■おわりに

今回はmatplotlibのグラフの種類を紹介しました。

細かい設定を覚えるのは大変なので、こんなグラフあったなあくらいに留めておき、

必要な時にその都度調べながらグラフを作っていくのが良いと思います。