matplotlib 在直方图中插入水平线[重复]

t1rydlwq  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(114)

此问题已在此处有答案

Plot a horizontal line on a given plot(7个回答)
两年前关门了。
我该如何在这个直方图中添加一条水平线?我已经尝试了通常的方法(使用条形图),但是由于y轴是以百分比表示的(我假设),因此该线无法绘制。我试图绘制一条从小时(x线)11到小时(x线)22的线,以描绘实验条件的变化。有人知道该怎么做吗?谢谢!

probability_list = np.array(probability_list, dtype=float)
x = 24
f, ax = plt.subplots(1, 1, figsize=(10, 5))
heights, bins = np.histogram(probability_list, bins=len(list(set(probability_list))))
percent = [i / len(dayammount) * 100 for i in heights]
ax.bar(bins[:-1], percent, width=.025, align="edge")
vals = ax.get_yticks()
ax.set_yticklabels(['%1.2f%%' % i for i in vals])
plt.xlim(xmin=0, xmax=24)
plt.xticks(range(0, 25))
plt.xlabel('Time (Hours)')
plt.ylabel('Probability of Sound (%)')
plt.show()
wmvff8tz

wmvff8tz1#

然而,由于y轴是以百分比表示的(我假设),因此这条线没有绘制出来。
一般来说,将heights转换为percents并不重要,matplotlib只会看到一个值列表。
目前还不清楚你已经尝试了什么,但这里有几个选择:

  • 使用hlines绘制一条有界水平线,例如从xmin=11xmax=22y=2
ax.hlines(y=2, xmin=11, xmax=22, colors='k', linestyles='--')
  • 或者使用普通的plot
ax.plot([11, 22], [2, 2], 'k--')

我没有你的原始数据,但这是一些模拟数据的输出:

相关问题