我有一个python字典,如下所示:
ngRoute
它们的键是int类型,值是float64类型。 不幸的是,当我尝试用线条绘制它时,matplotlib连接错误的点(附图)。如何按键值顺序连接线?
答案 0 :(得分:56)
Python词典是无序的。如果您需要有序词典,请使用collections.OrderedDict
在您的情况下,在绘图之前按键对字典进行排序,
import matplotlib.pylab as plt
lists = sorted(d.items()) # sorted by key, return a list of tuples
x, y = zip(*lists) # unpack a list of pairs into two tuples
plt.plot(x, y)
plt.show()
答案 1 :(得分:3)
只需将已排序的项目从字典传递到plot()
函数即可。 concentration.items()
返回一个元组列表,其中每个元组包含字典中的键及其对应的值。
您可以利用列表解压缩(使用*
)将已排序的数据直接传递给zip,然后再将其传递到plot()
:
import matplotlib.pyplot as plt
concentration = {
0: 0.19849878712984576,
5000: 0.093917341754771386,
10000: 0.075060643507712022,
20000: 0.06673074282575861,
30000: 0.057119318961966224,
50000: 0.046134834546203485,
100000: 0.032495766396631424,
200000: 0.018536317451599615,
500000: 0.0059499290585381479}
plt.plot(*zip(*sorted(concentration.items())))
plt.show()
sorted()
按元组项的顺序对元组进行排序,因此您不需要指定key
函数,因为dict.item()
返回的元组已经以键值开头。< / p>