我使用以下代码创建了一个带有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}}
这是结果,但我无法将标签放在正确的位置。如何将刻度标签放在栏的中心?
答案 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)