知ることはたのしい

"車輪の再発明"は時間がもったいないと思うから"車輪の設計図"を置いて学習の効率化に役立ちたい。そしてもっと素晴らしいものを開発してくれないかな。

matplotlibでグラフ表示しようしたらフリーズした問題

pythoncsvをプロットしようとしたところ下記のような感じで激重&フリーズという事態に…。
Y軸の様子が黒くなっていて明らかにおかしいことがわかります。
f:id:lenia23:20181207000317p:plain
異常なプロット

読みだしているのは高々5万点程度のデータで、同等サイズのリストをした場合は正常に出力されました。そのため、csv読み出し周辺が原因と推測できます。

今回、csvファイル中に文字列が混ざっているため読み出しにpython標準のopenreadlineを用いていました。
これで読み出したデータをそのままリストにしてプロットしていたことが問題で、readlineで読み出したデータは基本的に文字列として識別される仕様なのでプロット時の挙動がおかしくなってしまったようです。
結局のところ、プロットしたいデータをfloat型に明示的にキャストすることで正常な動作が得られます。

f:id:lenia23:20181207004426p:plain
正常なプロット

ちなみに読み出したかったデータ
f:id:lenia23:20181207005240p:plain
ECG(心電図)

まとめ


使用環境


・win10
・python3.6.3
・anaconda

現象


csvファイルを開いて読み出したデータをグラフにプロットしようとしたところ重い&フリーズ

解決方法


csv読み出しデータを明示的に数値型にキャストする