我正在使用matplotlib.pyplot库中的散点函数来可视化3D散点图中的某些数据。 Link to documentation 这个函数有一个名为'c'的参数,可用于为标记赋予特定的颜色。
他们注意到,给'c'的参数可以是存储在2D数组中的RGB代码。但是,当我尝试下面的代码时,它给出了一个错误:“ AttributeError:'list'对象没有属性'shape'”。
我的问题:是否可以为散点图中的标记提供RGB格式的自定义颜色?如果是的话,我该如何实现呢?
任何帮助将不胜感激。
编辑:解决方案:“ RGB”列表中的值范围应为0到1,而不是0到255。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import csv
RGB = [[255,255,255], [127,127,127], [10,10,10]]
r = []
g = []
b = []
a = 0
i = 0
j = 0
k = 0
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
mark = (".",",","o","v","^","<",">","1","2","3","4","8","s","p","P","*","h","H","+","x","X" ) # tuple for available markers from the matplotlib library
with open ('Color_Measurement_POCNR1_wolkjes.csv', 'r') as csvfile:
plots = csv.reader(csvfile, delimiter = ';')
for row in plots:
if a == 1:
r.append(float(row[6]))
g.append(float(row[7]))
b.append(float(row[8]))
print("j = ", j, "r = ", r[j]," g = ", g[j], " b = ", b[j])
ax.scatter(r[j], g[j], b[j], c= RGB[0], marker = mark[k] , s = 50)
a = 0
j += 1
k += 1
if row[0] == "Mean values":
a += 1
ax.set_xlabel('R Label')
ax.set_ylabel('G Label')
ax.set_zlabel('B Label')
plt.show()
答案 0 :(得分:0)
他们注意到,给'c'的参数可以是存储在2D数组中的RGB代码。
完全正确。但是,在代码中使用一维列表。 您可以将此列表封装在另一个列表中,使其成为2D
ax.scatter( ..., c= [RGB[0]])