Help us understand the problem. What is going on with this article?

matplotlib によるデータ可視化の方法 (1)

More than 5 years have passed since last update.

matplotlibpandas によるさまざまな図の描画方法を以前に紹介しました。しかしその具体的なパラメーターについては触れませんでした。今回から数回に渡り matplotlib による図形描画について追っていこうと思います。

図とサブプロット

matplotlib の Figure オブジェクトはプロット機能を提供します。 plt.figure() メソッドは何も描画されていない新しいウィンドウを描画します。 add_subplot() メソッドはその内部にサブプロットを生成します。

import numpy as np
from pandas import *
from pylab import *
import matplotlib.pyplot as plt
from matplotlib import font_manager
from numpy.random import randn

# 日本語を使うため必要
fontprop = matplotlib.font_manager.FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf")

# 新規のウィンドウを描画
fig = plt.figure()

# サブプロットを追加
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)

plt.show()
plt.savefig("image.png")

image.png

サブプロットへのデータ描画

plot をすると matplotlib は使用した図やサブプロットのうち一番最後のものに描画します。

ran = randn(50).cumsum()
# 黒色 (k) の破線で描画する
plt.plot(ran, 'k--')

plt.show()
plt.savefig("image2.png")

image2.png

サブプロットのインスタンスメソッドを明示的に呼び出すことで、任意のサブプロットに描画できます。

ax1.hist(rand(100), bins=20, color='k', alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3 * randn(30))

plt.show()
plt.savefig("image3.png")

image3.png

スペースの調整をする

サブプロット間のスペースの調整には subplots_adjust メソッドを使います。

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
    for j in range(2):
        axes[i, j].hist(randn(500), bins=50, color='k', alpha=0.5)

# サブプロット間の空白を詰めてみる
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0, hspace=0)

plt.show()
plt.savefig("image4.png")

image4.png

参考

Pythonによるデータ分析入門――NumPy、pandasを使ったデータ処理
http://www.oreilly.co.jp/books/9784873116556/

dts
コンサルティングから設計、開発、HW/SWの選定、運用、保守までシステムをサポートする総合情報サービス企業です。
http://www.dts.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした