20160515

Matplotlibの、subplotとsharexの黄金コンビ。

簡単にbroken axisを表現するためには、subplotを使うやり方が分かりやすい。

subplotとsharexの黄金コンビ。
切っても切り離せない(事もない)仲

まずは、subplot。
subplotは、1つの画像に、二つ以上のグラフを並べる時に使うコマンド。3つでも4つでも100でも。
只、実用的には、4〜5個がギリギリ見れる限度かなぁと。
sharex, sharey, tick_paramsなどを駆使して調節して6*6位で描けたりするかも。

まあ、大きめの画像を作ってしまえば、いくらでも描ける気もするが。
あくまでA2以上のサイズの紙への印刷用の域を出ない。
普通のディスプレイにはそんな大きな画像載らないし、意味ない。と思う。

subplot(2,2,3)
とすると、全グラフ領域が、2行2列で分割されたうちの、3番目を描くことになる。
具体的なコードは下の様になる。
import matplotlib.pyplot as plt

plt.subplot(2,2,3)
plt.text(0.25, 0.45, "subplot(" + str(2) + ", " + str(2) + ", " + str(3) + ")", fontsize = 'medium')
plt.tight_layout()
plt.show()

subplot(2,2,3)がどこら辺にあるかなとか見てね。
plt_subplot_3.png
白地に白は見にくい。
import matplotlib.pyplot as plt

fig =plt.figure()
fig.patch.set_facecolor('blue')

plt.style.use('dark_background')
plt.subplot(2,2,3)
plt.text(0.25, 0.45, "subplot(" + str(2) + ", " + str(2) + ", " + str(3) + ")", fontsize = 'medium')
plt.tight_layout()

fig.savefig('05.png', facecolor=fig.get_facecolor(), edgecolor='none')
fig.show()

なんでここだけ、プログラムで画像を保存する様にしているのかというと、青く設定したのに、plt.show()して出てくるウィンドウから、saveしても、なぜか白い背景になってしまったからだ
figure_05.png


import matplotlib.pyplot as plt

a = 3

x, y = 0.25, 0.45

for i in range(a**2):
ax = plt.subplot(3, 3, i+1)
plt.text(x, y, "subplot(" + str(a) + ", " + str(a) + ", " + str(i+1) + ")", fontsize = 'small')

plt.tight_layout()
plt.show()


text は以前作ったのを参考にした。
http://naga-tsuzuki.sblo.jp/article/175071741.html

plt_subplot_1.png

実際に、画面には、背景グレーでこんな表示。
plt_subplot_2.png


import matplotlib.pyplot as plt

a = 9

x, y = 0.1, 0.45

fig = plt.figure()

for i in range(a**2):
ax = plt.subplot(a, a, i+1)
plt.text(x, y, "subplot(" + str(a) + ", " + str(a) + ", " + str(i+1) + ")", fontsize =8)
plt.xticks(fontsize=5)
plt.yticks(fontsize=5)

fig.set_size_inches(16,9)

fig.savefig("06.png", dpi=600, facecolor='k', edgecolor='w',
orientation='portrait', papertype=None, format=None,
transparent=False, bbox_inches=None, pad_inches=0.1,
frameon=None)
#plt.tight_layout()
#plt.show()

9,9,81画像 800 kB近くある画像。↓クリックして見てね。
06.png

Broken axisに関しては、明日へ続くのであった。
posted by yuchan at 07:00 | Comment(0) | python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: