2013-01-07 37 views
0

我已經用x軸做了一個數字datetime(2012-8-1,2012-10,7 ....)如何把一個文本框放在python圖上,當xaxis是日期時間

我想提出一個文本框標記這個數字

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) 

,但我看不到標籤都沒有。

我該如何認識它?

+0

您可能已經說明了您在此處使用的庫(圖形庫?)。 – Celada

+0

猜你正在使用matplotlib ... – Oz123

+0

這是什麼'id = ...'-line好嗎?它是期望的輸出嗎?如果不是,如果它在你的代碼中:請不要隱藏內置的id函數。這可能有令人討厭的副作用。有一個最小的,獨立的例子也是有幫助的。你有什麼價值?他們可能是你的問題的原因... –

回答

1

您需要以與其他繪圖方法相同的格式(日期)輸入x座標,或者將轉換爲座標。如果你想堅持x = 0.25,你可以使用:

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

它會將文本放在斧頭寬度的四分之一處。

+0

我認爲那裏還需要一個'plt.draw()'。 – tacaswell

0

的一種方法是將日期轉換爲一個號碼,並使用在隨後的調用次數:

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

其中x是要轉換的日期時間,Y被假定不是在日期時間的格式,但在數字格式和消息包含您想要顯示的字符串。

相關問題