Python 使用 matplotlib 的 4D 图 - 读取和绘制数组时的混淆
Python 4D plot using matplotlib- confusion in reading and plotting the array
我有如下列表 -
array1 = [[1,2,3,0.56],[12,5,30,0.23],[10,12,17,89.65]]
这表示坐标- [[x1,y1,z1,c1],[x2,y2,z2,c2],[x3,y3,z3,c3]]。
我使用了 4D 图,第 4 维 [c1,c2,c3] 是颜色。我被困在密谋。我想在坐标 [x1,y1,z1] 处为 c1 设置颜色,并且与其他坐标类似。
我使用了以下方法 -
import matplotlib.pyplot as plt
import numpy as np
1) for p in range(len(array1)-1):
x = np.append([array1[p][0]], array1[p+1][0])
y = np.append([array1[p][1]], array1[p+1][1])
z = np.append([array1[p][2]], array1[p+1][2])
c = np.append([array1[p][3]], array1[p+1][3])
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(x,y,z,c=c,cmap = cmap)
plt.show()
方法 1 的问题是,它没有绘制列表的所有元素。估计是append执行出错了。我没有收到任何错误,但它只是没有绘制每个数据。
2) fig = plt.figure()
ax = fig.gca(projection='3d')
for p in range(len(array1)-1):
ax.scatter(array1[p][0],array1[p][1],array1[p][2],array1[p][3],cmap =
cmap)
plt.show()
所以在方法 2 中,我尝试迭代绘图,但它给了我 'float object unsubscriptable' 错误。
所以有人可以告诉我哪里出错了。或者还有其他方法可以做到这一点吗?
这是一种将列表转换为数组的方法,它允许您将所有元素直接切片为 x、y、z 和颜色坐标。
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
new_array = = np.array(array1)
ax.scatter(new_array[:,0],new_array[:,1],new_array[:,2], c=new_array[:,3], cmap=cm.RdBu, s=100)
我有如下列表 -
array1 = [[1,2,3,0.56],[12,5,30,0.23],[10,12,17,89.65]]
这表示坐标- [[x1,y1,z1,c1],[x2,y2,z2,c2],[x3,y3,z3,c3]]。 我使用了 4D 图,第 4 维 [c1,c2,c3] 是颜色。我被困在密谋。我想在坐标 [x1,y1,z1] 处为 c1 设置颜色,并且与其他坐标类似。
我使用了以下方法 -
import matplotlib.pyplot as plt
import numpy as np
1) for p in range(len(array1)-1):
x = np.append([array1[p][0]], array1[p+1][0])
y = np.append([array1[p][1]], array1[p+1][1])
z = np.append([array1[p][2]], array1[p+1][2])
c = np.append([array1[p][3]], array1[p+1][3])
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.scatter(x,y,z,c=c,cmap = cmap)
plt.show()
方法 1 的问题是,它没有绘制列表的所有元素。估计是append执行出错了。我没有收到任何错误,但它只是没有绘制每个数据。
2) fig = plt.figure()
ax = fig.gca(projection='3d')
for p in range(len(array1)-1):
ax.scatter(array1[p][0],array1[p][1],array1[p][2],array1[p][3],cmap =
cmap)
plt.show()
所以在方法 2 中,我尝试迭代绘图,但它给了我 'float object unsubscriptable' 错误。
所以有人可以告诉我哪里出错了。或者还有其他方法可以做到这一点吗?
这是一种将列表转换为数组的方法,它允许您将所有元素直接切片为 x、y、z 和颜色坐标。
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
new_array = = np.array(array1)
ax.scatter(new_array[:,0],new_array[:,1],new_array[:,2], c=new_array[:,3], cmap=cm.RdBu, s=100)