前提・実現したいこと
歩行者の位置情報を記録したcsvファイルを3次元散布図として表示するために
以下のソースコードを作成しました。
行数および歩行者ID数が膨大なので,歩行者ID毎に散布図を作成するルーチンをループ処理で行いたいのですが,プログラミング初心者のため,苦戦しております。
お力添えいただければ幸いです。
該当のソースコード
Python
1# 3次元散布図の作成 2 3import matplotlib.pyplot as plt 4from mpl_toolkits.mplot3d import Axes3D 5import pandas as pd 6 7df = pd.read_csv('group01.csv', names=('id', 'time', 'x', 'y', 'z')) 8fig = plt.figure() 9ax = fig.add_subplot(111, projection='3d') 10 11# TODO:以下をループ処理でID毎にグラフ表示できるようにしたい 12df01 = df.query('id=="1"') 13df02 = df.query('id=="2"') 14x01 = df01['x'] 15y01 = df01['y'] 16z01 = df01['z'] 17x02 = df02['x'] 18y02 = df02['y'] 19z02 = df02['z'] 20ax.scatter(x01, y01, z01, marker='o') 21ax.scatter(x02, y02, z02, marker='x') 22 23plt.show()
試したこと
色々調べてみると,list型を使うのが良いとのことでしたが,上手く組み込むことができませんでした...
ちょっと要件がよくわからないのですが、歩行者ID枚に別の図として出力したいのでしょうか。それとも、質問文のコードのようにマーカを変えるなどして一枚の図にするのでしょうか(マーカの数なんてたかがしれてるので、本当に「膨大」なら難しいと思います)
ご回答ありがとうございます。
状況の説明が足りず申し訳ありません。
大体50〜100のID分を一枚の図にしたいと考えております。
ソースコードでは2人分のIDまでしか記載しておりませんが、ループ処理で一括して散布図を作成するフォーマットを作っておけば、色々と応用が効くと思った次第です。
IDごとの点を区別する方法は考えなくて良いのでしょうか
正直なところmarkerもランダムに被りなく割り振ることができれば、それもやりたいと思っています。
回答1件
あなたの回答
tips
プレビュー