Python 根据列的高度用x轴值绘制直方图

Python 根据列的高度用x轴值绘制直方图,python,matplotlib,plot,histogram,Python,Matplotlib,Plot,Histogram,因此,假设我有以下几点: [1,5,1,1,6,3,3,4,5,5,5,2,5] Counts: {1:3, 2:1, 3:2, 4:1, 5:5, 6:1} 现在,我想打印一个类似于直方图的图,该图按x轴排序,如下所示: 传统的直方图是: X X X X X X X X X X X X X 1 2 3 4 5 6 我想要的是: X X X X X X X X X X X

因此,假设我有以下几点:

[1,5,1,1,6,3,3,4,5,5,5,2,5]

Counts: {1:3, 2:1, 3:2, 4:1, 5:5, 6:1}
现在,我想打印一个类似于直方图的图,该图按x轴排序,如下所示:

传统的直方图是:

        X  
        X
X       X  
X   X   X
X X X X X X
1 2 3 4 5 6
我想要的是:

        X  
        X
      X X  
    X X X
X X X X X 
2 4 3 1 5 
我当前的绘图代码是:

plt.clf()
plt.cla()
plt.xlim(0,1)
plt.axvline(x=.85, color='r',linewidth=0.1)
plt.hist(correlation,2000,(0.0,1.0))
plt.xlabel(index[thecolumn]+' histogram')
plt.ylabel('X Data')

savefig(histogramsave,format='pdf')

请帮帮我,我该怎么做。。。我知道我以前也发过一个类似的问题,但我想我不太清楚……

直方图不是你要找的图表。使用条形图

import numpy as np
import matplotlib.pyplot as plt

data = [1, 5, 1, 1, 6, 3, 3, 4, 5, 5, 5, 2, 5]
correlation = [(i, data.count(i)) for i in set(data)]
correlation.sort(key=lambda x: x[1])

labels, values = zip(*correlation)

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

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

编辑:对于大数据集,最好使用
计数,而不是列表理解


下面是一种更快地归档相同结果的方法(无需条形图或hist):


直方图不是您要查找的图形。使用条形图

import numpy as np
import matplotlib.pyplot as plt

data = [1, 5, 1, 1, 6, 3, 3, 4, 5, 5, 5, 2, 5]
correlation = [(i, data.count(i)) for i in set(data)]
correlation.sort(key=lambda x: x[1])

labels, values = zip(*correlation)

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

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

编辑:对于大数据集,最好使用
计数,而不是列表理解


下面是一种更快地归档相同结果的方法(无需条形图或hist):


在这里对一个大列表使用
count
效率低下,因为它会对每个唯一元素的列表进行迭代。@Jared同意。编辑了答案。谢谢你指出这一点。事情是。。。我有一个大约9000个相关值的大列表,因此0As in,你会如何为这么大的一组数据扩展它?我现在不明白这个问题。每个栏下是否需要标签(如示例中所示)?如果是,您希望如何用9000个值来显示它?如果没有它们,你所需要的只是整理你的相关性。这里是用于大型(10^4)数据集(我删除了宽度和标签)的,在大型列表中使用
count
效率低下,因为它会对每个唯一元素的列表进行迭代。@Jared同意。编辑了答案。谢谢你指出这一点。事情是。。。我有一个大约9000个相关值的大列表,因此0As in,你会如何为这么大的一组数据扩展它?我现在不明白这个问题。每个栏下是否需要标签(如示例中所示)?如果是,您希望如何用9000个值来显示它?如果没有它们,你所需要的只是整理你的相关性。这是一组大数据(10^4)(我删除了宽度和标签)