【发布时间】:2015-05-25 20:37:25
【问题描述】:
我有一个误差线图,其中 xaxis 是日期时间对象的列表。标准绘图方法会将第一个和最后一个点放置在绘图的边界框上。我想偏移半个刻度,以便可以清楚地看到第一个和最后一个点。
ax.axis(xmin=-0.5,xmax=len(dates)-0.5)
由于明显的原因不起作用。如果能够在不硬编码任何日期的情况下做到这一点,那就太好了。
以下将产生一个有 10 个点的图,但你实际上只能看到 8 个。
import datetime
import matplotlib.pyplot as plt
dates = [datetime.date(2002, 3, 11) - datetime.timedelta(days=x) for x in range(0, 10)]
yvalues = [2, 4, 1,7,9,2, 4, 1,7,9]
errorvalues = [0.4, 0.1, 0.3,0.4, 0.1,.4, 0.1, 0.3,0.4, 0.1]
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.errorbar(dates,yvalues,yerr=errorvalues,fmt='.')
fig.autofmt_xdate()
plt.show()
【问题讨论】:
-
用一些示例数据帮助您会容易得多。例如,某些方法可能会根据您的日期相距多远而受到青睐或不受欢迎。
-
我希望有一种通用的方式。实际日期无关紧要。假设我们希望日期之间的间距相等,而不管列表中的值如何。目标是让刻度晚半个空格开始,提前半个空格结束。我在下面的答案中给出了我目前的技巧。
-
没关系。提供一个简单的、可复制/可粘贴的脚本作为启动点是一种很好的做法。帮助你越容易,你得到的帮助就越多。就目前而言,我必须激活一个 conda 环境,启动一个 ipython 笔记本服务器,并创建我自己的假数据,并希望它能够代表您面临的问题。
标签: python datetime matplotlib axis