首页 > 解决方案 > 在 Matplotlib 中使用 RGB 值着色

问题描述

我有一个具有 X、Y、Z、R、G、B 值的数据框,我想使用这些信息绘制散点图,对于散点图中每个点的颜色,我需要给出 R、G、B 中的值.我尝试了下面的代码,如果我像做color ='r'一样给出静态颜色,它就可以工作。但是当我试图给出如下代码所示的 RGB 值时,它会产生错误。

fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection='3d')

for i in range(size):
    ax.plot(pts[:,0], pts[:,1], pts[:,2], '.', color = rgba(pts[i, 3], pts[i, 4], pts[i, 5]), markersize=8, alpha=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

如何从数据框的 R、G、B 列中给出值?

所有值均为 8 位格式。

标签: pythonmatplotlibcolorsdata-visualization

解决方案


这应该有效:

pts = np.array([[1, 2, 3, 0.0, 0.7, 0.0],
                [2, 3, 4, 0.5, 0.0, 0.0]])  # example


fig = plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, projection='3d')

#size = pts.shape[0]
#for i in range(size):
#    ax.plot([pts[i, 0]], [pts[i, 1]], [pts[i, 2]], '.',
#            color=(pts[i, 3], pts[i, 4], pts[i, 5]), markersize=8, #alpha=0.5)

for p in pts:
    ax.plot([p[0]], [p[1]], [p[2]], '.', color=(p[3], p[4], p[5]),  
            markersize=8, alpha=0.5)  

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

您可以通过元组指定rgb 颜色(r, g, b),其中 r、g、b 是 [0, 1] 范围内的浮点数。


推荐阅读