首页 > 解决方案 > Matplotlib.pyplot:如何滥用参数“c”来绘制具有不同颜色图的点?

问题描述

我正在使用一个外部库,它具有使用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)

标签: pythonmatplotlib

解决方案


This can be achieved actually rather easily:

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]

推荐阅读