2014-10-30 63 views
1

我試着輸入列表作爲標記參數,但我不斷收到,指出錯誤:如何改變Matplotlib中的標記?

ValueError: Unrecognized marker style ['', 'o', '', '', '', '', 'o', '', '', '', '', '', '', '', 'o', '', 'o', '', '', '', '', '', '', '', '', '', 'o', '', '', 'o', '', '', 'o', '', '', '', 'o', '', '', '', 'o', '', '', '', '', '', 'o', '', 'o', '', 'o', '', '', '', '', 'o', 'o', '', 'o', '', '', '', 'o', '', '', '', '', '', '', '', '', '', '', '', 'o', '', 'o', 'o', 'o', '', 'o', '', '', '', '', '', '', '', '', '', '', '', '', '', 'o', '', '', '', '', 'o', '', '', '', '', '', '', '', 'o', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'o', '', '', '', 'o', '', '', 'o', 'o', 'o', '', 'o', 'o', 'o', '', 'o', '', '', '', 'o', '', '', '', 'o', '', 'o', '', '', '', '', '', '', '', '', 'o', 'o', '', '', '', '', '', 'o', '', '', '', '', '', '', '', '', '', '', '', 'o', '', '', '', '', '', '', '', '', '', '', 'o', '', '', '', '', 'o', '', '', '', '', '', 'o', '', '', '', '', '', '', '', '', '', '', 'o', '', '', '', '', '', '', '', '', '', 'o', '', '', '', 'o', '', '', '', '', '', '', '', '', '*']

這裏是代碼:

pure_accuracy_rate,report,y_pred,test_labels,test_data,neigh = nearest_neighbors(raw_data,nlabels) 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 


plot_vars = ["SIO2","FEOT","MGO"] 


x1,y1,z1 = [test_data[:,chemicals.index(x)] for x in plot_vars] 
cmap = {1:"red",2:"green",3:"blue",4:"orange"} 
hit_shapes = {True:"*",False:"o"} 

hit_mat = [y_pred[i] == test_labels[i] for i in range(len(test_labels))] 
hit_shapes_mat = [hit_shapes[i] for i in hit_mat] 
rock_colors = [cmap[x] for x in test_labels] 


ax.scatter(x1, y1, zs=z1, c=rock_colors, marker=hit_shapes_mat) 

ax.set_xlabel(plot_vars[0]) 
ax.set_ylabel(plot_vars[1]) 
ax.set_zlabel(plot_vars[2]) 

有沒有提供一個標記列表的方式matplotlib?

+0

簡短的回答:沒有,按[文檔](http://matplotlib.org/api/pyplot_api.html #matplotlib.pyplot.scatter)。 Scatter不會將列表作爲標記樣式的輸入。但是,您可以將數據本身解析爲組並用單個相關標記樣式進行繪圖,而不是解析標記樣式(它看起來像您正在嘗試執行的操作)。它也會更乾淨。 – Ajean 2014-10-30 21:20:46

回答

0

顯然這是不可能的,你有你的數據集手動拆分成不同的標記組