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