前提・実現したいこと
3次元格子点をfor文でプロットしたい.
発生している問題・エラーメッセージ
格子点が1つ目しか表示されない.
該当のソースコード
Python
1import pandas as pd 2import numpy as np 3 4from mpl_toolkits.mplot3d import Axes3D 5import matplotlib.pyplot as plt 6 7data = pd.read_csv("C:\sample\mesh1.csv", header = None) 8data.columns = ['X', 'Y', 'Z', 'label'] 9data.head() 10 11y0 = data.iloc[0:, 3].values 12 13X = np.copy(data.iloc[0:, 0].values) 14 15Y = np.copy(data.iloc[0:, 1].values) 16 17Z = np.copy(data.iloc[0:, 2].values) 18 19XYZ = data.iloc[0:, [0,1,2]].values 20 21fig = plt.figure() 22ax = Axes3D(fig) 23 24for idx in range(len(np.unique(y0))): 25 ax.scatter(XYZ[idx, 0], XYZ[idx, 1], XYZ[idx, 2], 26 color='black', marker='x', linestyle='None')
csvの内容
[[-3 -3 -3 1]
[-3 -3 -2 1]
[-3 -3 -1 1]
...
[ 3 3 1 1]
[ 3 3 2 1]
[ 3 3 3 1]]
です. [-3, -3, -3]しかプロットされませんでした. 以下がcsvを作成した際のコードです.
lst = [] l = 1 for i in range(-3, 4): for j in range(-3, 4): for k in range(-3, 4): lst.append([i, j, k, l]) with open("C:\sample\mesh1.csv", 'w') as f: writer = csv.writer(f) writer.writerows(lst)
補足情報(ツールのバージョンなど)
anaconda JupiterLab 1.2.6
len(np.unique(y0))が1になっていませんか?
回答2件
あなたの回答
tips
プレビュー