blog.monophile.net

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

各種環境の構築と管理を承ります。

  • 仮想環境: Openstack, GCP, AWS, Azure, ...
  • アプリケーション: WordPress, GitLab, Redmine, ...

List

matplotlibの使い方メモ

いきさつ

matplotlibを使っていろんなグラフの書き方をしてみたので、それのメモとして。

基本

code

import matplotlib.pyplot as plt
import numpy as np

a = np.random.random(100)
plt.suptitle("test plot")
plt.plot(a,alpha=0.3)
plt.xlabel("index")
plt.ylabel("random")
plt.savefig("one.svg")

output

subplot

code

a = np.random.random(200)
b = 100 * np.random.random(200)
c = 1000 * np.random.random(200)
plt.figure(figsize=(8,7))
plt.subplot(311)
plt.plot(a,"b-")
plt.subplot(312)
plt.plot(b,"r-")
plt.subplot(313)
plt.plot(c,"g-")
plt.savefig("three.svg")

output

2軸

右と左に違うレンジを表示したい時に便利。

code

a = np.random.random(200)
b = 100 * np.random.random(200)
plt.plot(a,"b-",alpha=0.3)
ax = plt.twinx()
ax.plot(b,"r-",alpha=0.3)
plt.savefig("two.svg")

output

3軸

2軸じゃたりなくて、もう一本の軸が欲しい時に。

code

a = np.random.random(200)
b = 100 * np.random.random(200)
c = 1000 * np.random.random(200)

fig = plt.figure(figsize=(8,3))
plt.suptitle("tri plot")

a0 = fig.gca()
a1 = a0.twinx()
a2 = a0.twinx()

fig.subplots_adjust(right=0.75)
a2.spines['right'].set_position(('axes', 1.2))
a2.set_frame_on(True)
a2.patch.set_visible(False)
a1.spines['right'].set_position(('axes',1))

a0.set_ylabel("a")
a0.plot(a,"b-",alpha=0.3)

a1.set_ylabel("b")
a1.plot(b,"r-",alpha=0.3)

a2.set_ylabel("c")
a2.plot(c,"g-",alpha=0.3)

plt.savefig("four.svg")

output