繁体   English   中英

当xaxis是日期时间时如何在python图形上放置文本框

[英]How to put a text box on python figure when the xaxis is a datetime

我用x轴作为datetime制作了一个图(2012-8-1,2012-10,7 ....)

我想放一个文本框来标记这个数字

id = ("(A)","(B)","(C)","(D)","(E)","(Average)")

X轴

months = mpl.dates.MonthLocator() # every month
days = mpl.dates.DayLocator(interval=5) # every 10 days
dateFmt=mpl.dates.DateFormatter('%m-%d')    
ax.xaxis.set_major_formatter(dateFmt)
ax.xaxis.set_major_locator(months)
#ax.xaxis.set_minor_locator(days)
ax.xaxis_date()

Y轴

ax.set_ylim(ymin[i],ymax[i])
ax.set_ylabel(ylabels)
ax.axhline(linewidth=0.5,color="k")
ax.yaxis.set_major_locator(tk.MaxNLocator(nbins=3))
ax.yaxis.set_minor_locator(tk.MaxNLocator(nbins=6))
[tickline.set_markersize(3) for tickline in ax.yaxis.get_ticklines(minor=True)]
[tickline.set_markersize(2.5) for tickline in ax.yaxis.get_ticklines(minor=True)]

文本

ax.text(0.25,ymax[i],id[i],fontsize=15)

但是我根本看不到标签。

我怎么知道呢?

您需要以与其他绘图方法相同的格式(日期)输入x坐标,或变换坐标。 如果要坚持使用x = .25,则可以使用:

ax.text(0.25,ymax[i],id[i], transform=ax.transAxes, fontsize=15)

它将文本放置在斧头宽度的四分之一处。

一种方法是将日期转换为数字,并在后续调用中使用该数字:

dates = matplotlib.dates.date2num([x])
ax.text(dates[0], y, message, color='red')

其中x是要转换的日期时间,假定y不是日期时间格式,而是数字格式,并且message包含要显示的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM