簡體   English   中英

如何從數據幀的折線圖中 plot 誤差條

[英]How to plot errorbar in line chart from dataframes

我有兩個數據框,df_avg 和 df_sem,它們分別包含平均值和平均值的標准誤差。 例如:

        KPCmb1      KPCmb1IA    KPCmb2      KPCmb3      KPCmb4      KPCmb5      KPCmb6
temp                            
19.99   15.185905   24.954296   22.610052   29.249107   26.151815   34.374257   36.589218
20.08   15.198452   24.998227   22.615342   29.229325   26.187794   34.343738   36.596730
20.23   15.208917   25.055061   22.647499   29.234424   26.193382   34.363549   36.580033
20.47   15.244485   25.092773   22.691421   29.206816   26.202425   34.337385   36.640839
20.62   15.270921   25.145798   22.720752   29.217821   26.235101   34.364162   36.600030

        KPCmb1      KPCmb1IA    KPCmb2      KPCmb3      KPCmb4      KPCmb5      KPCmb6
temp                            
19.99   0.342735    0.983424    0.131502    0.893494    1.223318    0.536450    0.988185
20.08   0.347366    0.983732    0.136239    0.898661    1.230763    0.534779    0.993970
20.23   0.348641    0.981614    0.134729    0.898790    1.227567    0.529240    1.005609
20.47   0.350937    0.993973    0.138411    0.881142    1.237749    0.526841    0.991591
20.62   0.345863    0.983064    0.132934    0.883863    1.234746    0.533048    0.987520

我想 plot 使用 temp 作為 x 軸和 dataframe 列作為 y 軸的折線圖。 我還想使用 df_sem dataframe 為每一行提供誤差線(注意兩個數據幀之間的列名相同)。

我可以使用以下代碼實現此目的: df_avg.plot(yerr=df_sem) ,但這不允許我更改 plot 的許多方面,例如 DPI、標簽等。

因此,我嘗試使用以下代碼作為替代方案來制作 plot:

plt.figure()
x = df_avg.index
y = df_avg
plt.errorbar(x,y,yerr=df_sem)
plt.show()

但這給了我錯誤: ValueError: shape mismatch: objects cannot be broadcast to a single shape

我如何 go 制作與 pandas 繪圖和 matplotlib 繪圖相同的圖表?

謝謝!

你可以做一個簡單for循環:

for col in df_avg.columns:
    plt.errorbar(df_avg.index, df_avg[col], yerr=df_sem[col], label=col)

plt.legend()

Output:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM