You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决DataFrame升序排序后matplotlib绘图仍显示为降序的问题

解决Matplotlib绘图任务降序显示的问题

嘿,我看出来问题所在了——你排序的代码其实没生效,所以绘图里的任务才会倒序显示。

原因很简单:sort_values()方法默认不会直接修改原DataFrame,而是返回一个排序后的新对象,但你没把这个新对象赋值回去,原数据还是保持着原来的顺序,自然绘图时任务是降序的。

这里有两种简单的调整方式:

方式1:用inplace=True原地修改排序

直接在排序方法里加上inplace=True参数,这样会直接修改projektStart的顺序,不用额外赋值:

projektStart = df.loc[df.Status == 'Projektstart']
# 加入inplace=True,原地完成升序排序
projektStart.sort_values('Nr', ascending=True, inplace=True)
plt.plot(projektStart.Soll, projektStart.Aufgabe,'go-',alpha=0.5,label='Soll')
plt.plot(projektStart.Ist,projektStart.Aufgabe,'rx-',alpha=0.5,label='Ist')
plt.xlabel('Anzahl Stunden')
plt.ylabel('Aufgabenblöcke')
plt.title('Phase Projektstart')
plt.legend()

方式2:将排序结果重新赋值给变量

如果你不想原地修改原数据,可以把排序后的新DataFrame重新赋值给projektStart:

projektStart = df.loc[df.Status == 'Projektstart']
# 把排序后的结果覆盖原变量
projektStart = projektStart.sort_values('Nr', ascending=True)
plt.plot(projektStart.Soll, projektStart.Aufgabe,'go-',alpha=0.5,label='Soll')
plt.plot(projektStart.Ist,projektStart.Aufgabe,'rx-',alpha=0.5,label='Ist')
plt.xlabel('Anzahl Stunden')
plt.ylabel('Aufgabenblöcke')
plt.title('Phase Projektstart')
plt.legend()

修改后,绘图里的任务就会按照Nr从2.01到2.10的升序排列,"Zeitplan erstellen"会显示在最顶部啦。

内容的提问来源于stack exchange,提问作者samuel gast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:42:44