見出し画像

Pythonを使用したグラフの描画

ラズパイに接続したセンサーから取得したデータをグラフにするため、Pythonを使ったグラフ描画環境の構築を目指す。主に参考にしたのは下記リンク先のページだ。

matplotlibというライブラリを使用するためにパッケージをインストールする。

$ pip install matplotlib pillow

次に参考ページ中の動的にグラフを生成するところを再現してみる。サンプルコードを拝借し、試しに動かしてみる…『動かん。』

Python 3.7.3 (/usr/bin/python3)
>>> %Run test.py
Traceback (most recent call last):
 File "/usr/local/lib/python3.7/dist-packages/numpy/core/__init__.py", line 22, in <module>
   from . import multiarray
 File "/usr/local/lib/python3.7/dist-packages/numpy/core/multiarray.py", line 12, in <module>
   from . import overrides
 File "/usr/local/lib/python3.7/dist-packages/numpy/core/overrides.py", line 7, in <module>
   from numpy.core._multiarray_umath import (
ImportError: libf77blas.so.3: cannot open shared object file: No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "/home/pi/test.py", line 6, in <module>
   import numpy as np
 File "/usr/local/lib/python3.7/dist-packages/numpy/__init__.py", line 150, in <module>
   from . import core
 File "/usr/local/lib/python3.7/dist-packages/numpy/core/__init__.py", line 48, in <module>
   raise ImportError(msg)
ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

   https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

 * The Python version is: Python3.7 from "/usr/bin/python3"
 * The NumPy version is: "1.21.4"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: libf77blas.so.3: cannot open shared object file: No such file or director

拝借したコードを動かしてみたところ、自分の環境ではいろいろと問題があるようだ。考えられる問題として以下の2点を考え対処した。

①matplotlibのパッケージインストールがうまくいっていない。

これについてはまずmatplotlibが対応しているPythonのバージョンのパスに正しく保存されているのか確認する必要があった。ターミナルにpythonと入力するとバージョンが表示される。自分のラズパイにはPython2.7と3.7が入っているようだが、ターミナルにputhonと入力するとver2.7が表示されていた。(python3と入力するとver3.7が表示される。)

pi@raspberrypi:/home $ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 3
update-alternatives: /usr/bin/python (python) を提供するために自動モードで /usr/bin/python3.7 を使います
pi@raspberrypi:/home $ sudo update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.7
pi@raspberrypi:/home $ sudo update-alternatives --config python
alternative python (/usr/bin/python を提供) には 2 個の選択肢があります。

  選択肢    パス              優先度  状態
------------------------------------------------------------
* 0            /usr/bin/python3.7   3         自動モード
  1            /usr/bin/python2.7   1         手動モード
  2            /usr/bin/python3.7   3         手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 

ひとまず既定のバージョンを変更、確認することが上記のようにターミナル上で可能なようだ。ここでpythonと入力すればver3.7と出てくるようにした。(参考ページは下記)


②matplotlib以外に必要なパッケージを見逃している。

後は必要そうなライブラリ主に2つをインストールしてみた。

②-1

sudo apt-get install python3-gi-cairo

②-2

sudo apt-get install libatlas-base-dev

これをやった後にもう一度最初の参考ページのソースコードを動かしてみたら動いた。動的にSinカーブを描いてくれるというものだ。
環境設定に時間がかかり、先が長くなりそう。

この記事が気に入ったらサポートをしてみませんか?