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

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

MENU

【python】【matplotlib】【Part2】pythonでグラフを複数&2軸のグラフを書く

matplotlibでグラフを複数書く

■はじめに

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

今回はグラフを複数書く方法を紹介します。

 

■コード

import matplotlib.pyplot as plt
import numpy as np

t=np.arange(0,10,0.1)
#sin関数
y=np.sin(t)
#cos関数
y1=np.cos(t)

#グラフの作成
fig=plt.figure(figsize=(10,10))

ax1=plt.subplot2grid((2,2),(0,0))
ax1.plot(t,y)
ax1.set_ylabel('sin [mm]',fontsize=14)
ax1.set_xlabel('t [s]',fontsize=14)
ax1.set_title('test1')

ax2=plt.subplot2grid((2,2),(0,1))
ax2.plot(t,y,linestyle="dashed")
ax2.set_ylabel('sin [mm]',fontsize=14)
ax2.set_xlabel('t [s]',fontsize=14)
ax2.set_title('test2')

ax3=plt.subplot2grid((2,2),(1,0),colspan=2)
ax3.plot(t,y,linestyle='dashdot')
ax3.set_ylabel('sin [mm]',fontsize=14)
ax3.set_xlabel('t [s]',fontsize=14)
ax3.set_title('test2')

ax4=ax3.twinx()
ax4.plot(t,y1,linestyle="dashed",color='b')
ax4.set_ylabel('cos [mm]',fontsize=14)

#グラフのスタイルと隙間の設定
plt.style.use('ggplot')
plt.subplots_adjust(wspace=0.3, hspace=0.3)

plt.show()

実行すると以下の画面がでてきます。

今回も例としてsinとcosをグラフにしました。

また下段のグラフは2軸のグラフになっています。

f:id:stjun:20191014000901p:plain

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

今回はモニターです。

非常にコスパ良くお勧めです。これまでいくつかモニターを使いましたが、今後はずっとEIZOのモニターを使おうと思うくらい気に入ってます。

 

■説明

#グラフの作成
fig=plt.figure(figsize=(10,10))
ax1=plt.subplot2grid((2,2),(0,0))
ax1.plot(t,y)
ax1.set_ylabel('sin [mm]',fontsize=14)
ax1.set_xlabel('t [s]',fontsize=14)
ax1.set_title('test1')

まず1行目のfig=plt.figure()でグラフを描画する領域を作ります。

そのあと2行目のsubplot2grid*1でグラフを書いていきます。

subplot2grid()のカッコ中の1つ目(2,2)は全体で何個のグラフを書くか示しています。(2,2)は2行×2列=4個のグラフを書くという意味になります。カッコ中の2つ目(0,0)はどの位置にグラフを書くかです。(0,0)は左上、(0,1)は右上、(1,0)は左下、(1,1)は右下になります。

 

また以下のようにcolspanで二行に渡ってグラフを書くことができます。

ax3=plt.subplot2grid((2,2),(1,0),colspan=2)

subplot2grid*2なので本来は左下だけですがcolspan=2とあるので左下から右下にかけて長いグラフになります。

 

またグラフを2軸にしたい場合は以下のように書きます。

ax4=ax3.twinx()

上記はax3に対しax4のグラフをx軸を共有して重ねるという意味で、ax3のy軸が左、ax4のy軸が右になります。

 

■おわりに

前回と今回でmatplotlibの基本的な使い方は紹介しました。次回はグラフの種類を紹介したいと思います。

*1:2,2),(0,0

*2:2,2),(1,0