如何在Matplotlib中绘制未排序散点图并反转类别轴顺序
解决方法
你可以通过两种方式实现需求,任选其一即可:
方法1:直接反转Y轴顺序
在现有代码中添加一行axs.invert_yaxis(),就能把当前Y轴的类别顺序倒转,让原底部的类别移到顶部。修改后的代码如下:
fig,axs=plt.subplots() axs.scatter(trace1_summary["mean"],trace1_summary["cat3_items"]) axs.set(xlim=(-3,15),title= "89% Hdi Interval",ylabel="categories", xlabel="avg buyer365(standarized)") axs.axvline(0.0,ls="--",color="k",alpha=0.5,label="average Buyer") # 添加该行反转Y轴顺序 axs.invert_yaxis() plt.legend()
方法2:先按均值降序排序数据再绘图
如果想确保类别严格按照avg buyer365均值从高到低排列(而非仅反转原自动排序的结果),可以先对数据集按mean列降序排序,再进行绘图:
# 按mean列降序排序数据集 sorted_df = trace1_summary.sort_values(by="mean", ascending=False) fig,axs=plt.subplots() # 使用排序后的数据集绘制散点图 axs.scatter(sorted_df["mean"], sorted_df["cat3_items"]) axs.set(xlim=(-3,15),title= "89% Hdi Interval",ylabel="categories", xlabel="avg buyer365(standarized)") axs.axvline(0.0,ls="--",color="k",alpha=0.5,label="average Buyer") plt.legend()
内容的提问来源于stack exchange,提问作者R.jan
相关产品推荐
相关产品推荐

