我有一个问题。我有点云数据,现在我必须读取并绘制点。如果有人可以帮助我,我将非常感激。我正在使用 python(pandas, matplotlib,...),并且我获得了 X、Y、Z 的所有值,但不知道如何绘制所有值以获得 3D 绘图。这些值取自点云数据,它有 170 行和 254 个 x、y、z、I、N 值的组合。
https://datalore.jetbrains.com/notebook/n9MPhjVrtrIoU1buWmQuDh/MT7MrS1buzmbD7VSDqhGqu/
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import pandas as pd
df1 = pd.read_csv('cloud.txt',delimiter='\t')
pd.set_option('display.max_columns', None)
df1 = df1.apply (pd.to_numeric, errors='coerce')
#cloud.dropna()
df1.fillna(0,axis=0,inplace=True)
df2=df1.iloc[:,:-1]
df2.head(170)
kolone=[]
i=1
while i<6:
kolone.append(i)
i=i+1
display(kolone)
c=[]
columns=kolone*224
c=c+columns
df2.columns=c
display(df2)
#Reading the points: 1 column is x value, 2 column is y value and
3 column is z value. 4 and 5 are intensity and noise values and
they are not important for this.
#First row is exchanged with numerisation of columns: adding
values 1,2,3,4,5 or x,y,z,I,N values.
x=df2[1]
y=df2[2]
z=df2[3]
r=[]
i=1
while i<225:
r.append(i)
i=i+1
#print(r)
x.columns=r
display(x)
#Reading x coordinates--224 values of x
i=1
p=[]
while i<225:
p.append(i)
i=i+1
#print(p)
y.columns=p
display(y)
#Reading y coordinates--224 values of y
i=1
q=[]
while i<225:
q.append(i)
i=i+1
#print(q)
z.columns=q
display(z)
#Reading z coordinates--224 values of z
您还没有尝试过任何事情,这有点令人沮丧。 matplotlib 的 3D 散点图的文档页面包含一个完整的示例。
费尽心思来分配列名是没有意义的。 事实上,为此使用
pandas
确实没有任何意义;您可以将 CSV 直接读入 numpy
数组。 但是,假设您有一个包含未命名列的数据框,它仍然非常简单。
在这段代码中,我创建了一个 50x3 的随机整数数组,然后将列作为列表拉出并将它们传递给分散。 您应该能够使其适应您自己的代码。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
data = np.random.randint( 256, size=(50,3))
df = pd.DataFrame(data)
x = df[0].tolist()
y = df[1].tolist()
z = df[2].tolist()
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.scatter( x, y, z )
plt.show()