こんにちわ。ゆきぽんずです。
今日は以前取得したAndroidの加速度値をpythonを使って3Dプロットしていこうと思います!
ちなみに今回使用している実データは、以前の記事で取得したAndroidの加速度(CSVファイル)となっています。
以前の記事がこちらです。まだ見てない人は見てね( ´∀`)bグッ!
www.yukiyukiponsu.work
記事の読者 3Dグラフの作り方を学びたい方
それでは早速コードを見ていきましょう!
ファイル名 : 3DPlotAccelerationGraphBlog.py
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.dates as mdates
import numpy as np
import datetime
from scipy import signal
print('AccelerationData CSVFileName')
fileName = input('>>')
csv_input = pd.read_csv(filepath_or_buffer= fileName, encoding="utf8", sep=",")
x_array_Android = csv_input.iloc[:,0]
y_array_Android = csv_input.iloc[:,1]
z_array_Android = csv_input.iloc[:,2]
print("Androidのサンプル数")
array_length_android = len(x_array_Android)
print(array_length_android)
print("Android y軸の最大値・最小値")
print(y_array_Android.max())
print(y_array_Android.min())
fig = plt.figure()
asset_android_acceleration = fig.add_subplot(111, projection='3d')
def GraphPlot3D(asset, label1, X, Y, Z):
array_length = len(X)
asset.plot(X, Y, Z, c='b', marker='o', label=label1)
asset.legend()
asset.set_xlabel('X')
asset.set_ylabel('Y')
asset.set_zlabel('Z')
max_range = np.array([X.max()-X.min(), Y.max()-Y.min(), Z.max()-Z.min()]).max() * 0.5
mid_x = (X.max()+X.min()) * 0.5
mid_y = (Y.max()+Y.min()) * 0.5
mid_z = (Z.max()+Z.min()) * 0.5
asset.set_xlim(mid_x - max_range, mid_x + max_range)
asset.set_ylim(mid_y - max_range, mid_y + max_range)
asset.set_zlim(mid_z - max_range, mid_z + max_range)
GraphPlot3D(asset_android_acceleration, "Android_Acceleration[m/s2]", x_array_Android, y_array_Android, z_array_Android)
plt.show()
終わりです(笑)。短い行数で表現できるのがpythonの強みですが、3Dプロットをこの短さで実現できるのは本当にすごいです...
実行結果も載せておきます(できてもいないプログラムをサイトにあげるなんて言語道断なので)。
ちなみに3Dのグラフなので、動かしたりもできますよ!
以前の記事を参考にしてもらいながら、是非ご自分で実装してみてください!
今日は以上です。
今日もブログを読んでくださりありがとうございます。
それではまた後日( ´∀`)bグッ!