LoginSignup
1
0

More than 5 years have passed since last update.

Ipythonでplotしたグラフをテーブルに表示する

Last updated at Posted at 2017-04-28

plotしたグラフをテーブルに表示したい。

グラフを見比べるには並んでいて欲しい。
pyplotで並べるといまいちだし、Ipyhonだと、なかなかそうなってくれない。
そこでHTMLのtableを利用して並べる事を思いついた。
早速やってみたが、リロードをするとグラフの更新ができない。
色々やってみた結果base64を使って何とかなりました。

IPython.displayを使うと、下のa = 2 を変えてrunをしてもファイル名の登録だけだとリロードしてくれず、代替えでbase64を使用しました。

%matplotlib inline

import matplotlib.pyplot as plt
import numpy
import base64
from IPython.display import HTML

def encode64(filename):
    img = open(filename, 'rb')
    data = base64.b64encode(img.read())
    img.close()
    return "data:image/png;base64," + data.decode('utf-8')

a = 2

x = numpy.arange(-3, 3, 0.01)
img = []
for i in [1,2,3,4]:
    y = numpy.sin(6.28* x * a * i)
    plt.title("freq : " + str(i * a) + "Hz")
    plt.plot(x, y)
    plt.savefig("tmp.png")
    plt.clf()
    img.append(encode64("tmp.png"))

html = """
 <table>
  <tr>
   <td><img src="{0}" ></td>
   <td><img src="{1}" ></td>
   </tr>
  <tr>
   <td><img src="{2}"  ></td>
   <td><img src="{3}" ></td>
  </tr>
 </table>
 """.format(img[0], img[1], img[2], img[3])
HTML(html)

スクリーンショット 2017-04-28 16.39.41.png

スクリーンショット 2017-04-28 16.40.22.png

最後に

ちょっとトリッキーな力技だけど他の方法が見当たらないので、これで良しにしました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0