如何注释下图?

时间:2019-08-28 20:33:28

标签: python matplotlib graph annotations

我使用3个不同的熊猫系列制作了直方图。我想标记1,2,3条组。使用xlabels完成此操作失败。从技术上讲,它起作用了,但是数字1,2,3与条形图没有正确对齐。

我已决定跳过该步骤并尝试添加注释。不幸的是,我想出了正确的方法。

我尝试使用xlabels失败。现在,我正在尝试注释,但是在图表上显示的文本不能超过一个。

以下是数据外观的示例 Wr_Spr_Conv = [1,1,1,2,2,2,3,3,3,2,2,1,2,3 ...]

new2['Wr_Spr_Conv'].replace(0, pd.np.nan).dropna(inplace = True)
new2['Re_Spr_Conv'].replace(0, pd.np.nan).dropna(inplace = True)
new2['Ma_Spr_Conv'].replace(0, pd.np.nan).dropna(inplace = True)


plt.style.use('seaborn')
x_labels = [1,2,3]
fig, ax1 = plt.subplots(figsize=(10,10))

#ax1.spines['left'].set_position(('outward', 10))
#ax1.spines['bottom'].set_position(('outward', 10))
# Hide the right and top spines

ax1.spines['right'].set_visible(False)
ax1.spines['top'].set_visible(False)
ax1.spines['bottom'].set_visible(False)
ax1.spines['right'].set_visible(False)
nbins = 9
ax1.tick_params(bottom="off", top="off", left="off", right="off")
    ax1.hist([new2['Wr_Spr_Conv'],new2['Re_Spr_Conv'],new2['Ma_Spr_Conv']],nbins)
#ax1.set_xticks(3)
#ax1.set_xticks(3)
#ax1.set_xlim(right =3)
#ax1.set_xlim(left=0)
# Only show ticks on the left and bottom spines
#ax1.yaxis.set_ticks_position('left')
#ax1.xaxis.set_ticks_position('bottom')    
ax1.set_xticks(x_labels)
ax1.set_xlim(right=3)  # adjust the right leaving left unchanged
ax1.set_xlim(left=1)  # adjust the left leaving right unchanged
ax1.xaxis.set_major_locator(MaxNLocator(integer=True))
#ax1.annotate('Level 1',xy=(1,15))

1 个答案:

答案 0 :(得分:1)

假设您的Wr_Spr_Convpandas.Series,则可以将value_counts和pyplot的bar方法与属性align='center'一起使用,以创建直方图预定义数量的垃圾箱和居中标签

这是一个最小的示例:

import pandas as pd
from matplotlib import pyplot as plt

nbr_bins = 9
Wr_Spr_Conv = pd.Series( [1,1,1,2,2,5,9,2,7,7,2,3,3,3,2,2,1,2,3]) 
vc = Wr_Spr_Conv.value_counts(bins=nbr_bins)
plt.bar(vc.index.mid, vc.values, width=0.9*vc.index.length[0], align='center')
plt.gca().set_xticks(vc.index.mid)
plt.show()

结果: enter image description here

这应该让您入门!