Plotly Express柱状图按数值从大到小排序失效问题求助
解决方案
问题核心在于categoryorder仅对**分类轴(字符串类型x值)**生效,而你的x轴是数值型连续轴,所以该参数完全不起作用。另外,对Age列降序排序后,np.histogram仍会按照你指定的bins范围(0-80、步长5)统计,结果自然还是升序的bins。
直接反转统计得到的bins和counts数组,就能实现x轴从80到0降序显示,修改后的代码如下:
import numpy as np import plotly.express as px counts, bins = np.histogram(df.Age, bins=range(0, 80, 5)) bins = 0.5 * (bins[:-1] + bins[1:]) # 反转bins和counts的顺序,实现降序显示 bins_reversed = bins[::-1] counts_reversed = counts[::-1] fig = px.bar(x=bins_reversed, y=counts_reversed, text_auto=True, labels={'x':'Age', 'y':'count'}, title='Age distribution between min (18) and max(69)') fig.update_traces(textfont_size=14, textangle=0, textposition="outside", cliponaxis=False) fig.show()
绘图后x轴会从77.5(对应75-80区间)开始,到2.5(对应0-5区间)结束,完全符合你要的从80到0降序的需求。
内容的提问来源于stack exchange,提问作者GEM
相关产品推荐
相关产品推荐

