我有 3 个列表,它们都具有相同数量的元素:
time_list ###(float - converted from date object with matplotlib.dates.date2num)
temperature_list ###(float)
heating_list ###(boolean)
我想使用 Matplotlib 将温度绘制为时间的函数。我还有一个列表 heat_list,它由布尔值 True/False 组成,具体取决于当时是否发生加热。例如,如果曲线被加热,我希望曲线为红色,否则为蓝色。
我确实找到了这个例子:http ://wiki.scipy.org/Cookbook/Matplotlib/MulticoloredLine
但是,我想使用 heat_list 来决定颜色而不是一些温度值。我还想使用我已经拥有的列表,而不是示例中的 numpy 数组。
编辑:
我试过什么。
colors = ListedColormap(["b", "k"])
norm = BoundaryNorm([not heating, heating], colors.N) ### I don't really know how to define this condition
lc = LineCollection(tuple(zip(time_list, temperature_list)), label = "T1", cmap=colors, norm=norm)
###I tried to make my lists the same form as this "linen = (x0, y0), (x1, y1), ... (xm, ym)"
###According to LineCollection found here: http://matplotlib.org/api/collections_api.html
plt.gca().add_collection(lc)
plt.show()
我也试过:
time_plot = plt.plot(time_list, temperature_list, label = "T1")
time_plot.gca().add_collection(lc)
有一些问题是我的列表格式错误,这就是为什么我尝试做所有这些 zip/tuple 的事情。然后我意识到它无论如何都行不通,因为我不知道如何定义什么时候有哪些颜色。食谱示例简单地定义了值的范围,而我不希望它依赖于温度值,而是依赖于外部属性。