我想绘制温度随时间降低的情况。计算是正确的,我的问题是字典不能按顺序排列。我可以及时排序清单。键=时间(1年,5年,10年等),值=温度。我希望按键排序
drawtemperature={}
for i, tau in enumerate(years):
for well in producers :
Temperature=[]
if len(reached) == 0:
Temperature.append(T0)
else:
sumQ=well.flow/nbcontours*len(reached)
Tm=((well.flow-sumQ)*T0+sumQ*Ti)/well.flow
Temperature.append(Tm)
drawtemperature[tau]=Temperature
dc=[drawtemperature[k] for k in sorted(drawtemperature)]
for k in dc:
pylab.plot(drawtemperature.keys(), drawtemperature.values())
pylab.show()
它以错误的方式绘图,因为没有订购字典。这个数字应该像活塞一样。我无法发布图片,因为我需要至少10个声望(:
我知道我不能订购字典,我已经从集合中尝试了OrderedDict,但它不起作用。有什么想法吗?
答案 0 :(得分:3)
这样的东西?我假设您正在尝试按值对字典进行排序
pylab.plot(*zip(*sorted(dc.items(), key=lambda x:x[1])))
要切换轴,请使用此
pylab.plot(*reversed(zip(*sorted(dc.items(), key=lambda x:x[1]))))
要按键排序,只需退出key=...