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 パッケージを使ってグラフを描く手順として、以下のようになる。
Pyplot
クラスを用意する(落書き帳を用意する)Figure
クラスを用意する(落書き帳中の 1 ページを開いて用意する)Axes
クラスを用意する(開いたページをいくつか領域に分割する)Axes
クラスのメソッドを使用してグラフを描く(領域を選択してグラフを描く)
例えば、1 冊の落書き帳を用意して、そのうち 1 ページ目にグラフ描画領域を 1 つ用意して、続いて 2 ページ目にグラフ描画領域を 2 つ用意した場合は次のようになる。
これを 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()