2017-05-01 37 views
0

我是matlpotlib的新手,我發現蜱定位器和標籤混淆,所以請耐心等待。我發誓我一直在Google上搜索幾個小時。matplotlib設置xticks列,標籤到相應的索引

我有一個數據幀「幀」是這樣的(相關的數據列):

dayofweek sla 
weekday   
Mon  1 0.889734 
Tue  2 0.895131 
Wed  3 0.879747 
Thu  4 0.935000 
Fri  5 0.967742 
Sat  6 0.852941 
Sun  7 1.000000 

其中星期名稱是索引和平日數爲一列。在這個框架中沒有日期時間對象。

我變成一個plt.figure

fig=plt.figure(figsize=(7,5))  
ax=plt.subplot(111) 

我需要我的x軸的數值,因爲我想添加一個散點圖後,這是不可能的字符串值。

x_=frame.dayofweek.values 
anbar=ax.bar(x_,y_an,width=0.8,color=an_c,label='angekommen') 

該工程確定 xticks are 'dayofweek'

所以基本上我希望我的xticks是「星期幾」列及其標籤是相應的索引。 現在,如果我手動set_xticklabels通過

ax.set_xticklabels(frame.index) 

標籤從上軸位置0開始。

enter image description here

我可以解決此通過重新排列的標籤列表,但應該有一個「正確」的方式來使用定位器或格式化,但(見上文),這對我來說相當混亂。 有人可以指點我如何使標籤對應於他們的索引?

+0

對於未來的問題:進一步剝離您的示例可以進一步提高質量。在這種情況下,完整的工作示例只需要6行代碼即可完成。這使得回答你的問題的人更容易,但也使你的問題成爲其他類似問題的更一般的參考。 –

回答

3

的直接的解決方案是,不僅設置xticklabels也是蜱自己:

ax.set_xticks(frame.dayofweek.values) 
ax.set_xticklabels(frame.index) 

同樣可以用FixedLocator和FixedFormatter來完成,

ax.xaxis.set_major_locator(matplotlib.ticker.FixedLocator(frame.dayofweek.values)) 
ax.xaxis.set_major_formatter(matplotlib.ticker.FixedFormatter(frame.index)) 

,但似乎相當這個簡單的任務沒有必要。

+0

謝謝你,真的很簡單,完美的作品。我想我已經閱讀過matplotlib文檔中的某些地方,因爲set_xticks不鼓勵,所以我遠離它。儘管如此,這個問題也許對未來的某個人有用。 Cheers – badlands

+0

set_xticks在很多情況下都是不鼓勵的,因爲它用FixedFormatter替換了ScalarFormatter,而這通常是不希望的。但在這裏,它正是你想要的,我想。 – ImportanceOfBeingErnest

+0

絕對如此。我試着擺弄定位器,但老實說現在已經過去了,所以謝謝你回答這個沒有教養的問題;) – badlands