Python でグラフを描く方法

Python はもともと汎用性プログラミング言語として作られたものであったため、Python の基本的なメソッドを使ってグラフを描くことはできない。Python でグラフを描くには、視覚化パッケージを読み込んで、そのパッケージの機能を介してグラフを描くことになる。Python の視覚化パッケージとして、以下にあげたようなものがある。

  • matplotlib
    matplotlib は、もっとも古くから使われている Python 視覚化パッケージである。また、matplotlib は、現在でも一般的に使われており、インターネット上に様々な情報が蓄積されている。
  • seaborn
    seaborn は matplotlib を補完する位置付けとなる視覚化パッケージである。少ないコーディング量で、きれいなグラフが描けるというのが売り。
  • pandas
    Pandas の DataFrame 型や Series 型には、グラフを描くメソッドが用意されている。便利だが、細かい調整ができなかったりする。
  • ggplot
    ggplot パッケージを使うと、R の ggplot パッケージと同じようなグラフが描ける。使い方も、R と同じ。
  • plotly
    plotly はインタラクティブなグラフを描くパッケージである。
  • Bokeh
    Bokeh は plotly と同じくインタラクティブなグラフを描くパッケージである。

matplotlib

matplotlib パッケージを使ってグラフを描く手順として、以下のようになる。

  1. Pyplot クラスを用意する(落書き帳を用意する)
  2. Figure クラスを用意する(落書き帳中の 1 ページを開いて用意する)
  3. Axes クラスを用意する(開いたページをいくつか領域に分割する)
  4. Axes クラスのメソッドを使用してグラフを描く(領域を選択してグラフを描く)

例えば、1 冊の落書き帳を用意して、そのうち 1 ページ目にグラフ描画領域を 1 つ用意して、続いて 2 ページ目にグラフ描画領域を 2 つ用意した場合は次のようになる。

matplotlibを使ってグラフを描くとき、グラフ描画画面は Pyplot, Figure, Axes などのクラスで構成されている。

これを Python で実現しようとすると、次のようになる。

import matplotlib.pyplot as plt
import numpy as np

x = np.random.uniform(0, 100, 20)
y = x * np.random.uniform(1, 2, 20)


# Figure 1
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.scatter(x, y)
ax.set_xlabel('cold treatment [hour]')
ax.set_ylabel('gene activity')



# Figure 2
fig = plt.figure()
## Axes 1
ax1 = fig.add_subplot(1, 2, 1)
ax1.scatter(x, y)
## Axes 2
ax2 = fig.add_subplot(1, 2, 2)
ax1.scatter(x, y)


# show plots
plt.tight_layout()
plt.show()