Python 如何创建条形图/柱状图,每个离散值具有条形图?
我试图创建一个直方图,显示离散星级(1-5)中每个值的评级量。 每个值应有一个条形,在x轴上,每个条形下方(居中)仅显示[1,2,3,4,5]数字 我尝试将存储箱的数量设置为5或其范围设置为0-7,但这会创建跨值的条形图(如提供的图像所示) 这是我尝试过的代码(pandas和numpy): 及 您可以使用Python 如何创建条形图/柱状图,每个离散值具有条形图?,python,matplotlib,pandas,Python,Matplotlib,Pandas,我试图创建一个直方图,显示离散星级(1-5)中每个值的评级量。 每个值应有一个条形,在x轴上,每个条形下方(居中)仅显示[1,2,3,4,5]数字 我尝试将存储箱的数量设置为5或其范围设置为0-7,但这会创建跨值的条形图(如提供的图像所示) 这是我尝试过的代码(pandas和numpy): 及 您可以使用绘图(kind='bar')方法: stars = Series(randint(1, 6, size=100)) vc = stars.value_counts().sort_index()
绘图(kind='bar')
方法:
stars = Series(randint(1, 6, size=100))
vc = stars.value_counts().sort_index()
ax = vc.plot(kind='bar')
fig = ax.get_figure()
fig.autofmt_xdate()
要获得:
编辑#1:以比例显示它们,只需除以总和
vc /= float(vc.sum())
assert vc.sum() == 1
要获得:
编辑#2:将其显示为百分比除以上述总和,并使用format spec mini语言格式化y轴刻度标签
new_labels = ['{0:.0%}'.format(float(x.get_text())) for x in ax.get_yticklabels()]
ax.set_yticklabels(new_labels)
要获得:
谢谢,太好了!我实际上是从总体数据中以百分比的形式显示金额,您将如何使用建议的方法来实现这一点?
vc /= float(vc.sum())
assert vc.sum() == 1
new_labels = ['{0:.0%}'.format(float(x.get_text())) for x in ax.get_yticklabels()]
ax.set_yticklabels(new_labels)