我正在尝试制作一个 3D 散点图来对 CSV 文件中的数据(用于分配)进行分类。
我有三个属性,我想根据前三个属性值查看它们属于哪个类(类 1 或类 2)。
到目前为止,我已经设法制作了一个简单的分散图(标签等稍后添加),我想看看我是否可以根据类对我的图进行颜色编码。就像假设我希望第 1 类地块为红色,第 2 类地块为绿色。
我已经设法编写了一些代码,但不断收到“TypeError:列表索引必须是整数,而不是列表”
ax.scatter(x,y,z, zdir='z', c=colormap[categories])
我有点理解这个错误,但真的想不出一个正确的方法来解决它。我尝试定义一个函数来对绘图进行颜色编码,但它也没有成功。
此外,由于一些非常奇怪的原因,我在数组中的值以科学计数法打印。这不是问题,但我的眼睛看起来很痛。如果我只想将它打印为 0.00 而不是 0.0000000e+SomeNumberHere,我不确定该为 loadtxt 的 dtype 参数添加什么。
有人可以解释一下,也许可以提供一些帮助来纠正吗?谢谢你。这是我的代码:
import numpy as np
import matplotlib.pyplot as pyplot
import csv
myDataset2 = np.loadtxt(open('C:/DM1/DM201501.Assign1.Dataset02.csv', 'rb'),delimiter=',')
print myDataset2
a1=[]
a2=[]
a3=[]
for i in range(100):
a1.append(myDataset2[i][0])
a2.append(myDataset2[i][1])
a3.append(myDataset2[i][2])
from mpl_toolkits.mplot3d import Axes3D
colormap = [' ', 'r', 'g']
myClasses = []
for j in range(100):
if myDataset2[j][3]==1:
myClasses.append(1)
elif myDataset2[j][3]==2:
myClasses.append(2)
x=a1
y=a2
z=a3
fig = pyplot.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x,y,z, zdir='z', c=colormap[myClasses])
pyplot.show()