matplotlib仅在直方图中标出其频率值的最高条

时间:2019-03-31 03:47:51

标签: python python-3.x matplotlib histogram

我想在pytohn 3.7中由matplotlib创建的直方图中用频率值标记出最高的条形。

数据是熊猫的数据框。

就像这个数字一样, How to automatically annotate maximum value in pyplot?

但是,我的图是直方图。我不想用其值标记每个条。

1 个答案:

答案 0 :(得分:1)

这里是一种绘制频率图显示在最高条上的直方图的方法:

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)

# Generate data
data = np.random.normal(0,1,200)

# Plot histogram
plt.figure()
y, x, _ = plt.hist(data, histtype='bar', edgecolor='darkgray', bins=15)

# Compute the max value (plt.hist returns the x and y positions of the bars)
ymax = y.max()
idx = np.where(y == ymax)[0][0]
xval = x[idx]

# Annotate the highest value
plt.gca().text(xval, ymax, ymax, ha='left', va='bottom')

Histogram with highest value annotated