Pandas Seaborn绘图条时间序列x轴:如何显示每个条的值

Pandas Seaborn绘图条时间序列x轴:如何显示每个条的值,pandas,matplotlib,seaborn,Pandas,Matplotlib,Seaborn,当图形(条形图)的时间序列为X轴时,如何显示每个条形图的值: 我有一个数据帧df_final_seaborn: 并使用以下代码绘制条形图: sns.set(rc={'figure.figsize':(30,15)},palette=['#F70A0A','#2A930C','#930C85'], font_scale=1.7) # pour les axes ax = sns.barplot(x=df_final_seaborn.index,y='Isan\'ny olona',data=d

当图形(条形图)的时间序列为X轴时,如何显示每个条形图的值:

我有一个数据帧df_final_seaborn:

并使用以下代码绘制条形图:

sns.set(rc={'figure.figsize':(30,15)},palette=['#F70A0A','#2A930C','#930C85'], font_scale=1.7)
# pour les axes 
ax = sns.barplot(x=df_final_seaborn.index,y='Isan\'ny olona',data=df_final_seaborn,hue='Covid-19 Madagascar')
sns.set_style("darkgrid" , {"ytick.major.size": 10 , "ytick.minor.size": 2 , 'grid.linestyle': '--'})
plt.xticks(rotation=90)
plt.xlabel('Daty', fontsize = 20)
plt.ylabel('Isan\'ny olona', fontsize = 20)
plt.minorticks_on()
plt.legend(loc='upper left')
plt.grid(b=True, which='minor', color='#999999', linestyle='-', alpha=0.2 , axis='y')
ax.xaxis.set_major_formatter(plt.FixedFormatter(df_sea.index.to_series().dt.strftime("%Y-%m-%d")))
plt.show()
结果是:

我的问题是如何显示条形图的每个值:

我在这里也遇到了同样的问题,添加了下面的代码

for index , row in df_final_seaborn.iterrows():
   ax.text(row.name,row['Isan\'ny olona'], round(row['Isan\'ny olona'],0), color='black', ha="center")


plt.show()

Out : TypeError: float() argument must be a string or a number, not 'Timestamp'
当我把

for index , row in df_final_seaborn.iterrows():
    print(index)
    print(row)
结果将是:

另一种解决方案是通过matplotlib,如下所示:

在此之前添加:plt.show()

输出:

TypeError                                 Traceback (most recent call last)
<ipython-input-127-717d236faadf> in <module>
     12 ax.xaxis.set_major_formatter(plt.FixedFormatter(df_sea.index.to_series().dt.strftime("%Y-%m-%d")))
     13 for i , v in enumerate (df_final_seaborn):
---> 14        plt.text(df_final_seaborn.iloc[i], v + 0.01, str(v))
     15 #      print(i)
     16 #      print(v)

TypeError: can only concatenate str (not "float") to str
TypeError回溯(最近一次调用)
在里面
12 ax.xaxis.set_major_格式化程序(plt.FixedFormatter(df_sea.index.to_series().dt.strftime(“%Y-%m-%d”))
13对于枚举中的i、v(df_final_seaborn):
--->14 plt.文本(df_final_seaborn.iloc[i],v+0.01,str(v))
15#打印(一)
16#打印(v)
TypeError:只能将str(而不是“float”)连接到str

有什么想法吗?

您不应该在数据帧上迭代,因为行和条之间的对应关系无法保证。相反,在条形图上迭代:

sns.set(rc={'figure.figsize':(30,15)},palette=['#F70A0A','#2A930C','#930C85'], font_scale=1.7)
# pour les axes 
ax = sns.barplot(x=df_final_seaborn.index,y='Isan\'ny olona',data=df_final_seaborn,hue='Covid-19 Madagascar')
sns.set_style("darkgrid" , {"ytick.major.size": 10 , "ytick.minor.size": 2 , 'grid.linestyle': '--'})
plt.xticks(rotation=90)

for patch in ax.patches:
    x, width, height = patch.get_x(), patch.get_width(), patch.get_height()
    color = patch.get_facecolor()

    # ignore 0 and nan values
    if height is None or height==0: continue

    ax.text( x+width/2, height+0.1, f'{height}',ha='center',color=color)
输出:


非常感谢
TypeError                                 Traceback (most recent call last)
<ipython-input-127-717d236faadf> in <module>
     12 ax.xaxis.set_major_formatter(plt.FixedFormatter(df_sea.index.to_series().dt.strftime("%Y-%m-%d")))
     13 for i , v in enumerate (df_final_seaborn):
---> 14        plt.text(df_final_seaborn.iloc[i], v + 0.01, str(v))
     15 #      print(i)
     16 #      print(v)

TypeError: can only concatenate str (not "float") to str
sns.set(rc={'figure.figsize':(30,15)},palette=['#F70A0A','#2A930C','#930C85'], font_scale=1.7)
# pour les axes 
ax = sns.barplot(x=df_final_seaborn.index,y='Isan\'ny olona',data=df_final_seaborn,hue='Covid-19 Madagascar')
sns.set_style("darkgrid" , {"ytick.major.size": 10 , "ytick.minor.size": 2 , 'grid.linestyle': '--'})
plt.xticks(rotation=90)

for patch in ax.patches:
    x, width, height = patch.get_x(), patch.get_width(), patch.get_height()
    color = patch.get_facecolor()

    # ignore 0 and nan values
    if height is None or height==0: continue

    ax.text( x+width/2, height+0.1, f'{height}',ha='center',color=color)