Цвет с использованием значения RGB в Matplotlib - PullRequest
0 голосов
/ 14 октября 2018

У меня есть фрейм данных со значениями 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-битном формате.

1 Ответ

0 голосов
/ 14 октября 2018

Это должно работать:

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].

...