入手しやすいデバイスを使って作業効率アップ

M5StackやM5Paperなどを使って効率アップデバイスを作ります。

CSVファイルから3D散布図を作成

3軸散布図の作成方法はすぐに見つかりました。
作図はPythonのpyplotを使用し、CSVファイルはpandasを使って読み出します。
出来た散布図がこれです・・・。スタート位置とゴール位置が大幅にずれています。
坂を上って下って元の位置に戻ったのですが、上り坂と下り坂で歩幅が違うからかもしれません。

3D散布図

しかし、これは便利なツールです。
今までPythonはあまり興味が無かったのですが、これは使わない手はないでしょう。
ActiveXコントロールのような手軽さです。

コードは以下の通りです。

from matplotlib import pyplot as plt
import pandas as pd

col_names = ['x', 'y', 'z', 'm']
data = pd.read_csv('data.csv', names=col_names)
listX = data["x"]
listY = data["y"]
listZ = data["z"] 
listM = data["m"]
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(projection='3d')
cm = plt.cm.get_cmap('RdYlBu')
mappable = ax.scatter(listX, listY, listZ, c=listM, cmap=cm, linestyle='-')
fig.colorbar(mappable, ax=ax)
ax.plot(listX,listY,listZ, c="black", linestyle='-')
plt.show()

以下はCSVデータを作るための、エクセルのワークシートの計算式です。
方角は90度単位にしました。

H=ROUND(方角/90,0)*90
X1=X0+ROUND(歩幅*SIN(RADIANS(H)),0)
Y1=Y0+ROUND(歩幅*COS(RADIANS(H)),0)

データの一部は以下の通りです。X,Y,Z列のほかにマーク位置の列を追加しています。
X軸方向を北で計算しています。Z列は気圧です。
高度が上がると気圧が下がってしまうので-1をかけていますが、pyplotで指定できるのかもしれません。
XYZ位置は線でつないで、マーク位置を散布図のように表示しています。

-50,50,-2425,1
-100,50,-2427,
-150,50,-2426,
-200,50,-2425,
-250,50,-2428,
-300,50,-2427,2

精度が良くなれば、なにか屋外用ゲームに使えるかもしれません。