为什么使用pandas的dataframe.plot绘图时误差条无法显示?
问题根因
yerr参数传入的误差DataFrame列名与绘图使用的均值列名不匹配,pandas无法完成误差与对应柱状图的绑定,因此不会渲染误差条。
你绘图用的列是x_mean、y_mean,但误差列是x_se、y_se,列名不一致导致匹配失败。
解决方案
方法1:对齐误差数据与绘图数据的列名
将误差DataFrame的列名修改为和绘图列完全一致,即可自动匹配:
import pandas as pd import matplotlib.pyplot as plt rows = ["N", "W", "E", "S"] cols = ["x_mean","y_mean","x_se","y_se"] data = ([50, 40, 2, 5], [30, 34, 3, 5], [60, 45, 8, 3], [80, 60, 5, 5]) df = pd.DataFrame(data, index = rows, columns = cols) # 重命名误差列和绘图列保持一致 error_df = df[["x_se", "y_se"]].rename(columns={"x_se":"x_mean", "y_se":"y_mean"}) df[["x_mean", "y_mean"]].plot(kind="bar", yerr=error_df, rot=1) plt.show()
方法2:直接传入误差数值数组
跳过列名匹配逻辑,直接把误差值转成numpy数组传入,pandas会按列顺序对应误差:
df[["x_mean", "y_mean"]].plot(kind="bar", yerr=df[["x_se", "y_se"]].values, rot=1) plt.show()
两种方法都可以正常显示分组柱状图对应的误差条。
内容的提问来源于stack exchange,提问作者Cooper
相关产品推荐
相关产品推荐

