如何将 pandas .plot() 转换为 Matplotlib .errorbar()
How to transfer pandas .plot() to Matplotlib .errorbar()
我希望在使用 pandas 的 .plot()
函数
绘制的线图中绘制 误差线
scores_xgb.plot(x='size', y='MSE_mean_tot', kind='line',logx=True,title='XGBoost 5 samples, 5 fold CV')
运行 这给了我以下情节:
为了绘制误差线,我选择使用 Matplotlib 中的 .errorbar()
。当运行单元格
plt.errorbar(x=scores_xgb.size, y=scores_xgb.MSE_mean_tot, yerr=std_xgb ,title='XGBoost 5 samples, 5 fold CV')
plt.show()
我收到以下错误消息:
ValueError: 'x' and 'y' must have the same size
这让我感到困惑,因为我在两个示例中使用了相同的 Dataframe,每次分别对 x
和 y
使用 相同的变量 ,因此两次都具有相同的大小 (12)。
注意: yerr = std_xgb
也有 12 码。
在 pandas.DataFrame
个对象上有一个 属性 名为 size
,它是一个数字,等于 DataFrame 中单元格的数量(df.shape
).您正在尝试访问名为 size
的 列,但 pandas 在 之前选择了名为 size
的 属性 它选择列名 size
。由于单个数字的形状为 1,但数据框中的列的长度为 12,因此形状不匹配。
相反,使用字符串索引数据框并获取列:
plt.errorbar(x=scores_xgb['size'], y=scores_xgb['MSE_mean_tot'], yerr=std_xgb, title='XGBoost 5 samples, 5 fold CV')
我希望在使用 pandas 的 .plot()
函数
scores_xgb.plot(x='size', y='MSE_mean_tot', kind='line',logx=True,title='XGBoost 5 samples, 5 fold CV')
运行 这给了我以下情节:
为了绘制误差线,我选择使用 Matplotlib 中的 .errorbar()
。当运行单元格
plt.errorbar(x=scores_xgb.size, y=scores_xgb.MSE_mean_tot, yerr=std_xgb ,title='XGBoost 5 samples, 5 fold CV')
plt.show()
我收到以下错误消息:
ValueError: 'x' and 'y' must have the same size
这让我感到困惑,因为我在两个示例中使用了相同的 Dataframe,每次分别对 x
和 y
使用 相同的变量 ,因此两次都具有相同的大小 (12)。
注意: yerr = std_xgb
也有 12 码。
在 pandas.DataFrame
个对象上有一个 属性 名为 size
,它是一个数字,等于 DataFrame 中单元格的数量(df.shape
).您正在尝试访问名为 size
的 列,但 pandas 在 之前选择了名为 size
的 属性 它选择列名 size
。由于单个数字的形状为 1,但数据框中的列的长度为 12,因此形状不匹配。
相反,使用字符串索引数据框并获取列:
plt.errorbar(x=scores_xgb['size'], y=scores_xgb['MSE_mean_tot'], yerr=std_xgb, title='XGBoost 5 samples, 5 fold CV')