如何在 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_unique
和 counts
。
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()
我有一个列表,其中包含一些值的计数,我想制作一个条形图以将计数视为条形。列表如下:
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_unique
和 counts
。
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()