matplotlib 如何给予pyplot散点图中的标记自定义RGB颜色?

beq87vna  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(269)

我正在使用matplotlib.pyplot库中的scatter函数来可视化3D散点图中的某些数据。这个函数,Link to documentation,有一个名为'c'的参数,可以用来给标记一个特定的颜色。
他们注意到'c'的参数可以是一个存储在2D数组中的RGB代码。然而,当我尝试下面的代码时,它给出了一个错误:"属性错误:"list"对象没有属性"shape'"。

    • 我的问题:**是否可以从RGB格式中为散点图中的标记提供自定义颜色?如果可以,我该如何实现?

任何帮助都将不胜感激。

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()
6jygbczu

6jygbczu1#

他们注意到,为'c'给定的参数可以是存储在2D数组中的RGB代码。
完全正确。然而,在你的代码中你使用了一个1D列表。你可以把这个列表封装在另一个列表中,使它成为2D的。

ax.scatter( ..., c= [RGB[0]])
wxclj1h5

wxclj1h52#

列表“RGB”中的值应在0到1之间,而不是0到255之间。
此答案由OP Mauricio Paulusma在CC BY-SA 4.0下发布为问题“如何为pyplot散点图中的标记提供自定义RGB颜色?”的edit

相关问题