Matplotlib.pyplot: как злоупотреблять аргументом «c» для построения точек с разными цветовыми картами?

#python #matplotlib

Вопрос:

Я использую внешнюю библиотеку, в которой есть функция для автоматического создания графика с использованием matplotlib.pyplot . Он принимает один numpy.ndarray / pandas.DataFrame и генерирует пользовательскую фигуру. Я хотел бы «злоупотреблять» matplotlib.pyplot.plot(..., c=colors, ...) аргументом так, чтобы я мог np.vstack использовать несколько матриц и передавать значение для цветов, чтобы я окрашивал каждую вложенную матрицу другой цветовой картой.

 a = np.zeros((10, 2))
b = np.zeros((20, 2))
c = np.zeros((5, 2))

plot_mat = np.vstack(a, b, c)


colors = list(range(a.shape[0]))   list(range(b.shape[0]))   list(range(c.shape[0]))
external_fn(plot_mat, ..., c=colors)
 

Комментарии:

1. может быть, это ?

2. @QuangHoang Я ценю полезную документацию, но, к сожалению, у меня нет доступа к ax переменным из этой функции. У меня есть c и cmap и colors .

3. Просто любопытно, какова ваша внешняя функция? обычно они разработаны так, чтобы вы могли либо передавать ax , либо получать ax из него.

Ответ №1:

На самом деле это может быть достигнуто довольно легко:

 from matplotlib import cm
cm_a = cm.get_cmap('viridis')
cm_b = cm.get_cmap('inferno')

c_a = np.array(list(range(a.shape[0])))
c_b = np.array(list(range(b.shape[0])))

c_a = c_a / np.max(c_a)
c_b = c_b / np.max(c_b)

c = [cm_a(i) for i in c_a]   [cm_b(i) for i in c_b]