gpt4 book ai didi

python - 对数据进行排序以在 python 中从最高到最低呈现条形图

转载 作者:太空狗 更新时间:2023-10-30 02:31:46 31 4
gpt4 key购买 nike

我有一堆数字,想将它们绘制成条形图(如直方图)。

我的图表可以正常工作,但它是按照我输入值的顺序排列的,而不是我想要的从高到低的顺序。

这是目前的代码:

 phenos = [128, 20, 0, 144, 4, 16, 160, 136, 192, 52, 128, 20, 0, 4, 16, 144, 130, 136, 132, 22, 
128, 160, 4, 0, 32, 36, 132, 136, 164, 130, 128, 22, 4, 0, 144, 160, 54, 130, 178, 132,
128, 4, 0, 136, 132, 68, 196, 130, 192, 8, 128, 4, 0, 20, 22, 132, 144, 192, 130, 2,
128, 4, 0, 132, 20, 136, 144, 192, 64, 130, 128, 4, 0, 144, 132, 28, 192, 20, 16, 136,
128, 6, 4, 134, 0, 130, 160, 132, 192, 2, 128, 4, 0, 132, 68, 160, 192, 36, 64,
128, 4, 0, 136, 192, 8, 160, 12, 36, 128, 4, 0, 22, 20, 144, 86, 132, 82, 160,
128, 4, 0, 132, 20, 192, 144, 160, 68, 64, 128, 4, 0, 132, 160, 144, 136, 192, 68, 20]

from collections import Counter
import numpy as np
import matplotlib.pyplot as plt


labels, values = zip(*Counter(phenos).items())

indexes = np.arange(len(labels))
width = 1

plt.bar(indexes, values, width)
plt.xticks(indexes + width * 0.5, labels)
plt.show()

它产生了下图。抱歉,标签都被弄脏了。

我希望它从最高到最低...有谁知道我如何在不改变现象的情况下做到这一点?我试过做

phenos.sort()

在我画图之前,但那并没有改变图。提前致谢!

最佳答案

首先对 Counter(phenos).items() 进行排序:

In [40]: from collections import Counter
...: import numpy as np
...: import matplotlib.pyplot as plt
...: from operator import itemgetter
...:
...: c = Counter(phenos).items()
...: c.sort(key=itemgetter(1))
...: labels, values = zip(*c)
...:
...: indexes = np.arange(len(labels))
...: width = 1
...:
...: plt.bar(indexes, values, width)
...: plt.xticks(indexes + width * 0.5, labels)
...: plt.show()

输出: enter image description here


或者,如果您想按 x 轴排序,只需使用 itemgetter(0):

c.sort(key=itemgetter(0))

得到:

enter image description here

关于python - 对数据进行排序以在 python 中从最高到最低呈现条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22204648/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com