将标签放在每个栏的中心

时间:2016-08-25 15:57:06

标签: python python-2.7 matplotlib

我使用以下代码创建了一个带有fig = plt.figure(figsize=(15, 15), facecolor='white') ax_left = fig.add_subplot(221) ax_left.grid() ax_left.bar( [ix for ix in range(len(resp_tx.keys()))], resp_tx.values, #align='center', tick_label=resp_tx.keys(), color='#A6C307', edgecolor='white', ) ax_left.tick_params(axis='x', labelsize=10) for label in ax_left.get_xticklabels(): label.set_rotation(45) pyplot库的条形图:

pandas

其中resp_tx是APPROVED 90 ABANDONED_TRANSACTION 38 INTERNAL_PAYMENT_PROVIDER_ERROR 25 CANCELLED_TRANSACTION_MERCHANT 24 ENTITY_DECLINED 6 CANCELLED_TRANSACTION_PAYER 2 Name: resp_tx, dtype: int64 系列,如下所示:

{{1}}

这是结果,但我无法将标签放在正确的位置。如何将刻度标签放在栏的中心?

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过以下修改解决了这个问题:

 resp_tx = self.tx_per_account[account].resp_tx.value_counts()          
 ax_left = fig.add_subplot(221)                                         
 ax_left.grid()                                                         
 ax_left.bar(                                                           
     [ix for ix in range(len(resp_tx.keys()))],                         
     resp_tx.values,                                                    
     color='#A6C307',                                                   
     edgecolor='white',                                                 
 )                                                                      
 ax_left.set_xticks([ix+0.4 for ix in range(len(resp_tx.keys()))])      
 ax_left.set_xticklabels(resp_tx.keys(), rotation=40, ha='right')       
 ax_left.set_ylim(top=(max(resp_tx.values)+max(resp_tx.values)*0.05))   
 ax_left.set_xlim(left=-0.2)                                            
 #ax_left.spines['top'].set_visible(False)                              
 ax_left.spines['right'].set_visible(False)                             
 #ax_left.spines['bottom'].set_visible(False)                           
 ax_left.spines['left'].set_visible(False)  

enter image description here