我正在编写一个python应用程序,它从无线传感器网络收集温度和时间。
简单地说,我的代码片段是这样的:
a.set_facecolor((0.9, 0.9, 1.0))
myFmt = mdates.DateFormatter('%H:%M')
a.xaxis.set_major_formatter(myFmt)
a.xaxis_date()
a.set_title('WSN temperature')
a.set_ylabel('Temp ' + u"\u2103")
a.set_xlabel('Time')
a.grid(True)
a.set_ylim([-20, 40]) #values found in the collectsensor.py
a.yaxis.set_ticks(np.arange(-20, 40, 5))
a.set_xlim([timeIntervalLeft, timeIntervalRight])
cmap = clr.LinearSegmentedColormap.from_list("", ["darkblue", "blue", "violet", "yellow", "orange", "red"])
cmap2 = clr.LinearSegmentedColormap.from_list("", ["red", "orange", "yellow", "violet", "blue", "darkblue"])
a.scatter(timeList, tempList, c=tempList, s=100, cmap=cmap)
y = tempList
s = pd.Series(y, index=timeList)
# convert dates to numbers first
inxval = mdates.date2num(s.index.to_pydatetime())
points = np.array([inxval, s.values]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
lc = LineCollection(segments, cmap=cmap2, linewidth=3)
lc.set_array(inxval)
a.add_collection(lc)
使用该代码,我获得了类似的内容:
你可以看到散射可以使用cmap,因此点变得越来越热"随着y值的增加。我为剧情功能寻找了类似的东西,但我找不到任何适合我的东西。
感谢ImportanceOfBeingErnest,我注意到之前的问题How to plot multi-color line if x-axis is date time index of pandas
但是这里的颜色与y轴的温度并没有关系,但是它沿着所有的cmap颜色分布。