【发布时间】:2019-06-24 09:49:54
【问题描述】:
我在2D Numpy arrays 中存储了双变量时间序列。我想在同一个情节上绘制该系列的两个频道。每个系列都应该用一条根据频道着色的线来表示。在这些行之上,我想将系列的点绘制为点。这些应根据相同形状的第二个2D Numpy array 中的值进行着色。我的问题是:如何为两个通道共有的范围内的点设置颜色映射?
通过plt.plot() 和plt.scatter() 的双重调用,我设法为每个系列获得了不同颜色和点的线条,例如:
import matplotlib.pyplot as plt
import numpy as np
# Bivariate time-series of length 10
nchannel, length = 2, 10
array_series = np.random.random((nchannel, length))
array_colors = np.vstack([np.repeat(0, length), np.repeat(1, length)])
colormap = 'jet'
plt.plot(np.arange(length), array_series[0,:])
plt.scatter(np.arange(length), array_series[0,:], c=array_colors[0,:], cmap=colormap)
plt.plot(np.arange(length), array_series[1,:])
plt.scatter(np.arange(length), array_series[1,:], c=array_colors[1,:], cmap=colormap)
这不是想要的输出,因为所有的点都是深蓝色的,所以 array_colors 中的 0 和 1 之间的区别就消失了。我寻找类似用plt.scatter(..., c=array_colors, cmap=colormap) 替换plt.scatter(..., c=array_colors[i,:], cmap=colormap) 的东西。但是,后者会引发错误。欢迎任何解决此问题的想法!
【问题讨论】:
-
你能显示预期的输出吗?或者你的 sn-p 有什么问题?
-
@majpark 运行你的代码后,我得到随机颜色点
-
@ZarakiKenpachi 我修改了 array_colors 定义以显示预期的输出。
标签: python matplotlib plot colors