2018年12月22日土曜日

Python Flask, bokehでレスポンシブなグラフをWebページに描く★

このページの焼き直しです。

Ubuntu


venvでやれば特に問題なく元のコードで全て再現できました

■いつものFlaskと違うところ
最初にページを開くとき、127.0.0.1:5000 ではエラーになるので
http://127.0.0.1:5000/100/
など、数字を付け足さないといけません。付け足す数字がバーの数になっています。



(後で更新する)

Windows

バージョンを合わせずにやったので少し修正が必要でした。

■bokeh.chart不要

ModuleNotFoundError: No module named 'bokeh.charts'
とエラーが出ますが、bokeh.chartsはdeeprecatedです。
Barは使っていないのでコメントアウトしました。
# from bokeh.charts import Bar


■X軸の値のエラー
ValueError: expected an element of either Seq(String), Seq(Tuple(String,
String)) or Seq(Tuple(String, String, String)), got [1]

というエラーが出ました。これはよくわからなくて、整数ではなくてStringを渡せということのようです。dataにappendするintをstr(int)の形にしたらできました。
■レスポンシブの設定
plot = figure(... の中で、 AttributeError: unexpected attribute 'responsive' to Figure,  というのが出てきたので、responsive=True は消しました。代わりに、 sizing_mode='scale_width' を入れました。
https://github.com/bokeh/bokeh/issues/4620

■htmlは表示されるが、Bokeh Error JSON object has wrong type stringというエラーが出る
chart.htmlのscriptの部分でsrcのbokehのバージョンが合っていませんでした。
    <script src="http://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.5.min.js">
の数字を自分の入れたバージョンに合わせたらOKでした。

■hoverのX軸が小数点以下の値も表示されてしまうので、整数にする。
<span class="hover-tooltip">$x</span>

の$xに{0}を追加して
<span class="hover-tooltip">$x{0}</span>

としたらOK

0 件のコメント:

コメントを投稿