matplotlib 如何将科学标签添加到直方图?

sshcrbum  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(145)

我尝试在每个条形图上方打印科学标签,类似于我的Y轴已经设置为科学记数法。我尝试使用“{:.2E}".格式,但这不起作用,因为我尝试转换整个数组(计数)。有什么想法吗?
xx= NP范围(0,10),标签= [0.2、0.1、0.0、1.0、2.0、3.0、4.0、5.0、6.0、7.0]
plt.图形(图形大小=(7,4.5)),plt.bar(xx,计数),plt.xlabel('基准.距离'),plt.xticks(xx,标签)
addlabels(xx,计数.类型('int 32'))
平面刻度标签_格式(坐标轴='y',样式='sci',上限=(0,0))
文件名称(文件),plt.show()

zpgglvta

zpgglvta1#

条形图有一个辅助函数来添加标签,它会格式化标签,但是它的文档显示的是一种老式的格式化字符串(通常称为printf格式化)。如果你想控制所有的格式化字符串,你可以创建一个标签列表。试试这个:

import numpy as np
import matplotlib.pyplot as plt
import random

xx= np.arange(0,10)
labels = [0.2,0.1,0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0]
count = random.sample(range(3000,14000), len(xx))

fig, ax = plt.subplots(figsize=(7, 4.5))
barplot = ax.bar(xx, count)
plt.xlabel('base.distance')
plt.xticks(xx, labels)

#ax.bar_label(barplot) # the whole numbers
#ax.bar_label(barplot, fmt='%2.1e') #old school
ax.bar_label(barplot, labels=map(lambda x: '{:.2E}'.format(x), count))

plt.ticklabel_format(axis='y', style='sci', scilimits=(0,0))

plt.ylabel('Count')
plt.show()

相关问题