Используя matplotlib.pyplot, установите цвета линий временных рядов, используя значения из массива numpy. - PullRequest
0 голосов
/ 21 января 2019

Привет, я новичок в python и столкнулся с некоторыми проблемами при построении данных временных рядов в виде линий, пытаясь установить цвет каждой строки на основе значения, связанного с каждой строкой, которая хранится в массиве с пустыми фрагментами, здесь хранится как colorValues.

У меня есть матрица данных для построения yValues ​​через соответствующие xValues. Я хочу установить цвет каждой строки на основе значения для каждого сохраненного в массиве colorValues. Это следует примеру здесь (где с помощью plt.scatter массив значений 0 и 1 вводится для значений цвета как c = someArray).

import matplotlib.pyplot as plt
import numpy as np

yValues
>>>matrix([[-0.33, -0.93,  0.94, -0.17,  0.62],
           [ 0.06, -0.87,  1.1 , -0.17,  0.12],
           [-0.01, -0.78,  0.88, -0.17,  0.18],
           [-0.19, -0.87,  0.94, -0.56,  0.21],
           [-0.08, -0.72,  0.88, -0.35,  0.15]])

xValues = ['1','2','3','4','5']
colorValues = np.array([1, 1, 1, 0, 0])

plt.plot(xValues, yValues, color=colorValues)
plt.show()

Однако, когда я запускаю код, используя color = colorValues ​​или c = colorValues, он возвращает следующую ошибку:

ValueError: RGBA sequence should have length 3 or 4

Ответы [ 2 ]

0 голосов
/ 21 января 2019

plot может принимать только один цвет. Я подозреваю, что вы пытаетесь сделать это:

import matplotlib.pyplot as plt
import numpy as np


yValues = np.array(  [[-0.33, -0.93,  0.94, -0.17,  0.62],
                       [ 0.06, -0.87,  1.1 , -0.17,  0.12],
                       [-0.01, -0.78,  0.88, -0.17,  0.18],
                       [-0.19, -0.87,  0.94, -0.56,  0.21],
                       [-0.08, -0.72,  0.88, -0.35,  0.15]]  )

xValues = ['1','2','3','4','5']
colorValues = np.array([1, 1, 1, 0, 0]).astype(float)

for y,c in zip(yValues.T, colorValues):
    plt.plot(xValues, y, color=plt.cm.viridis(c))
plt.show()
0 голосов
/ 21 января 2019

Чтобы указать значения оттенков серого , вам необходимо использовать строки, например '0.1' or '1.0'. См. документацию по цветам

строковое представление значения с плавающей точкой в ​​[0, 1] включительно для уровня серого (например, «0,5»)


scatter использует c для отображения точек на карту цветов . Однако вы явно определяете цвет с помощью параметра color для функции plot. Если вы хотите имитировать это поведение, вы можете использовать цветовые карты (plt.cm), чтобы извлечь цвет. Значения должны быть в диапазоне от 0 до 1 (как число против строки, использованной ранее для оттенков серого). Вот пример, использующий цветовую карту струи:

for y, c in zip(yValues, colorValues):
    plt.plot(xValues, y, color=plt.cm.jet(value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...