如何在 Python 中制作列表的条形图

How to make bar plot of a list in Python

我有一个列表,其中包含一些值的计数,我想制作一个条形图以将计数视为条形。列表如下:

print(lii)
# Output
[46, 11, 9, 20, 3, 15, 8, 63, 11, 9, 24, 3, 5, 45, 51, 2, 23, 9, 17, 1, 1, 37, 29, 6, 3, 9, 25, 5, 43]

我想要这样的图,每个列表值都作为一个条形图,它的值在顶部:

我尝试了以下代码,但它将列表绘制成一个系列:

plt.figure(figsize=(30, 10))
plt.plot(lii)
plt.show()

感谢任何帮助。

你可以使用 matplotlib pyplot bar 来完成。

此示例认为 lii 是要计算的值列表。

如果您已经有了唯一值和关联计数的列表,则不必计算 lii_uniquecounts

import matplotlib.pyplot as plt

lii = [46, 11, 9, 20, 3, 15, 8, 63, 11, 9, 24, 3, 5, 45, 51, 2, 23, 9, 17, 1, 1, 37, 29, 6, 3, 9, 25, 5, 43]

# This is a list of unique values appearing in the input list
lii_unique = list(set(lii))

# This is the corresponding count for each value
counts = [lii.count(value) for value in lii_unique]

barcontainer = plt.bar(range(len(lii_unique)),counts)

# Some labels and formatting to look more like the example
plt.bar_label(barcontainer,lii_unique, label_type='edge')
plt.axis('off')
plt.show()

这是输出。每个条上方的标签是值本身,而条的长度是该值的计数。例如,值 9 的条最高,因为它在列表中出现了 4 次。

我相信你想要这样的东西:

ax = sns.barplot(x=np.arange(len(lii)), y=lii)
ax.bar_label(ax.containers[0])
plt.axis('off')
plt.show()