科学の箱

科学・IT・登山の話題

Python

複数のグラフを表示する方法

投稿日:

ここでは以下を説明する。

  • 複数のグラフを表示する2つの方法
  • サブプロットのグラフを整形

複数のグラフを表示する

複数のグラフを表示するためには二通りの方法がある。

  1. subplots()を使ってあらかじめエリアを作成
  2. subplot()でグラフを追加
  3. サブプロットのグラフを整形-subplot()

subplots()を使ってあらかじめエリアを作成

matplotlib.pyplot.subplots — Matplotlib 3.1.1 documentation

matplotlib.pyplot.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None,
  • nrows, ncolsにグリッドの行数、列数を指定する。例えばnrow2=2, ncols=2ならグリッド数は2×2で4になる。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 10, 100)

fig, ax = plt.subplots(2)
ax[0].plot(x, np.sin(x))
ax[1].plot(x, np.cos(x))

 

subplot()でグラフを追加

subplot(nrows, ncols, index, **kwargs)
  • nrows, ncols, indexにそれぞれ、サブプロットの場所を示す、行、列、インデックスを指定する。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 10, 100)

fig = plt.figure()
plt.subplot(2,1,1)
plt.plot(x, np.sin(x))
plt.subplot(2,1,2)
plt.plot(x, np.cos(x))

 

サブプロットのグラフを整形

サブプロットのグラフを整形-subplots()

subplots()でグラフ描画エリアを作成し、サブププロットにグラフを描画することはできた。このグラフを整形する手順を下記に示す。

この手順はsubplotsで戻されたaxes.Axesを利用する。

axes.Axes — Matplotlib 3.1.1 documentation

グラフの整形はタイトル、ラベル等はAxis Labels, title, and legend

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 10, 100)

fig, ax = plt.subplots(2)
ax[0].plot(x, np.sin(x))
ax[0].set_title("Sin(X)")
ax[0].set_xlabel("Subplot 1 - x")
ax[0].set_ylabel("Subplot 1 - y")


ax[1].plot(x, np.cos(x))
ax[1].set_title("Cos(X)")
ax[1].set_xlabel("Subplot 2 - x")
ax[1].set_ylabel("Subplot 2 - y")

さて上記のグラフでは2つ目のグラフのタイトルが一つ目のグラフのx軸ラベルとオーバーラップしている。そのためx軸ラベルは表示されていない。このような場合にはpyplot.tight_layoutを使う。

Tight Layout guide — Matplotlib 3.1.1 documentation

 

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 10, 100)

fig, ax = plt.subplots(2)
ax[0].plot(x, np.sin(x))
ax[0].set_title("Sin(X)")
ax[0].set_xlabel("Subplot 1 - x")
ax[0].set_ylabel("Subplot 1 - y")


ax[1].plot(x, np.cos(x))
ax[1].set_title("Cos(X)")
ax[1].set_xlabel("Subplot 2 - x")
ax[1].set_ylabel("Subplot 2 - y")

# こちらを追加
plt.tight_layout()

 

サブプロットのグラフを整形-subplot()

subplot()の場合にはサブプロットを選択後にpyplotを利用してグラフを整形する。オーバーラップは発生するのでpyplot.tight_layout()は必ずよびだす。

 

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 10, 100)

fig = plt.figure()
plt.subplot(2,1,1)
plt.title("Sin(X)")
plt.xlabel("Subplot 1 - x")
plt.ylabel("Subplot 1 - y")
plt.plot(x, np.sin(x))
plt.tight_layout()

plt.subplot(2,1,2)
plt.plot(x, np.cos(x))
plt.title("Cos(X)")
plt.xlabel("Subplot 2 - x")
plt.ylabel("Subplot 2 - y")
plt.plot(x, np.sin(x))
plt.tight_layout()

 

 

メタ情報

inarticle



メタ情報

inarticle



-Python
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

seabornで線形解析を実施する

seabornを使えば線形解析も簡単に実行できる。   import seaborn as sns tips = sns.load_dataset(‘tips’) sns.lmplot(x= …

no image

dataframeで条件を付けて要素を返す方法

前回の続きから。 dfは現在以下のようになっている。 W X Y Z A 2.706850 0.628133 0.907969 0.503826 B 0.651118 -0.319318 -0.848 …

no image

python virtualenvの使い方

pip3 install virtualenv virtualenv myenv myenv/Scripts/activate Related posts:pandaのチュートリアルkaggle Ti …

no image

蟻本 P42 硬貨の問題

貪欲法の基本 その時点で最善の手を尽くす 尽くした結果を目的とする値に反映させる。 次善の手になるようにする。 1に戻る 硬貨の問題 A=int(input()) *C,=map(int,input( …

no image

pythonからgoogle translateを使う

まずはパッケージをpip経由でインストール pip install googletrans これで完了。あとは利用するだけです。 日本語を英語に翻訳するとき。 translator = Transla …

2019年9月
« 8月   10月 »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

side bar top



アーカイブ

カテゴリー