我用matplotlib创建了下面的直方图。如何在条形图上添加百分比,而不必使用百分比本身创建新的数据帧?
x = df1
fig, ax = plt.subplots()
plt.hist(x['tx'],range=[0,11],cumulative=True, density=True, bins=np.arange(11)+ 0.7,color='dimgray',edgecolor='white',width=0.6)
plt.xticks(range(11))
plt.yticks(np.arange(0, 1.1, step=0.1))
ax.set_axisbelow(True)
ax.yaxis.set_major_formatter(ticker.PercentFormatter(xmax=1))
ax.grid(linestyle='-', linewidth='0.4', color='grey')
发布于 2021-03-16 08:40:21
可以使用函数plt.text(x,y,s)在绘图上打印文本,其中x和y是文本字符串s的位置。
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.text.html
下面是它在您的示例中的工作方式:
array = np.random.randint(0, 11, 50)
values, x_pos, _ = plt.hist(array,range=[0,11],cumulative=True, density=True, bins=np.arange(11)+ 0.7,color='dimgray',edgecolor='white',width=0.6)
plt.xticks(range(11))
plt.yticks(np.arange(0, 1.1, step=0.1))
[plt.text(x_, val, "{0:.1f} %".format(val *100)) for x_, val in zip(x_pos, values)]
对于文本格式和选择要显示的小数位数,或者如果要转换为百分比,您可以获取有关https://www.geeksforgeeks.org/string-formatting-in-python/的详细信息
https://stackoverflow.com/questions/66651484
复制相似问题