基于x轴上带有日期的向量的颜色的python线图

时间:2019-06-24 18:52:10

标签: python matplotlib colors

我有一个向量[1,2,3,4,5,6,7,8,9]和一个配色方案[0,1,1,1,1,1,0,1,1],我想制作一个简单的线图,其颜色取决于配色方案,并且在x轴上的日期由时间戳矢量{{ 1}}。这是一个玩具示例。在我无法在此处显示的数据中,此向量是从某处加载的,并且采用时间戳格式。

我使用以下answer生成了这段代码,使我的情节变得如此:

[ pd.Timestamp(i,1,1) for i in range(2000,2009)]

enter image description here

但是我在x轴上格式化日期时遇到问题。在import numpy as np import pylab as pl from matplotlib import collections as mc import matplotlib.dates as mdates x = [1,2,3,4,5,6,7,8,9] colors = [0,1,1,1,1,1,0,1,1] segments = [] y = x cols = np.zeros(shape=(len(colors),4)) index = 0 for x1, x2, y1,y2 in zip(x, x[1:], y, y[1:]): if colors[index]==0: cols[index] = tuple([1,0,0,1]) else: cols[index] = tuple([0,1,0,1]) index += 1 segments.append([(x1, y1), (x2, y2)]) lc = mc.LineCollection(segments, colors=cols, linewidths=2) fig, ax = pl.subplots() ax.add_collection(lc) ax.autoscale() ax.margins(0.1) ax.set_xticklabels([ pd.Timestamp(i,1,1) for i in range(2000,2009)]) fig.autofmt_xdate() pl.show()

之前添加这两行
pl.show()

产生ax.xaxis.set_major_locator(mdates.AutoDateLocator()) ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d')) 。当x轴最初设置为某些日期格式时,通常不会发生这种情况,但是由于ValueError: ordinal must be >= 1的使用,此处的构造很特殊。

您能帮我解决这个问题吗?

0 个答案:

没有答案