使用matplotlib在textarea中显示时间戳

时间:2017-06-28 17:15:30

标签: python-2.7 matplotlib annotations

我有一张地图,我使用matplotlib从csv文件中绘制,我用pandas读取,我需要在textearea中显示我的数据的日期,所以我这样做:

Start =data.index.max()
End = data.index.min()
txt = 'Date debut:',End,'Date fin:',Start
props1 = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
ax.text(0.17, 0.17, txt, transform=ax.transAxes, fontsize=8, bbox=props1, family = 'monospace')   
plt.show()

我得到了这个结果: enter image description here

正如你所看到的那样,这并不是一个令人满意的结果,所以我需要将地图上写的文字调整到地图的右下角,在日期和日期之间插入一个空格,最后隐藏'timestamp'从textarea只留下日期,我该怎么办?

1 个答案:

答案 0 :(得分:1)

可以使用前两个参数来定位文本;只需用其他东西替换数字0.17即可。在这方面,使用hava(水平和垂直对齐)并设置它们以便可以轻松选择坐标(例如ha="right"在指定坐标时有意义可能有所帮助右侧的情节)。请注意,如果对您有意义,您可能会选择负值。

要很好地格式化字符串,首先要将Timestamp转换为字符串。这是使用strftime方法完成的。作为参数,您可以指定格式化标记,例如"%d %b %Y"日月格式。当然可以在python documentation

中找到一套完整的格式选项

一个完整的例子可能是:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt


d = pd.date_range("2017-01-01","2017-06-30",freq="D" )
x = np.random.rand(len(d))
data = pd.DataFrame(x, index=d)
fig, ax = plt.subplots()

start = data.index.min().strftime("%d %b %Y")
end   = data.index.max().strftime("%d %b %Y")

txt = "Date debut: {}, date fin: {}".format(start, end)
props1 = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
ax.text(0.98, 0.03, txt, transform=ax.transAxes, fontsize=8, bbox=props1, 
        family = 'monospace', ha="right", va="bottom")   
plt.show()

enter image description here