在柱状图中绘制平均线(matplotlib)

use*_*827 51 python axis matplotlib

我拉使用Python中matplotlib直方图,并想提请代表数据集的平均值的线,覆盖在直方图为虚线(或者一些其它颜色会做太).有关如何在直方图上绘制线条的任何想法?

我正在使用plot()命令,但不确定如何绘制垂直线(即我应该为y轴给出什么值?

谢谢!

War*_*ser 107

您可以使用plotvlines绘制垂直线,但是从y轴的底部到顶部绘制垂直线,axvline可能是最简单的函数.这是一个例子:

In [80]: import numpy as np

In [81]: import matplotlib.pyplot as plt

In [82]: np.random.seed(6789)

In [83]: x = np.random.gamma(4, 0.5, 1000)

In [84]: result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)

In [85]: plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)
Out[85]: <matplotlib.lines.Line2D at 0x119758828>
Run Code Online (Sandbox Code Playgroud)

结果: 情节


小智 14

这是个老话题,只是次要的加法,但我经常喜欢做的一件事就是在行旁边绘制平均值:

import numpy as np
import matplotlib.pyplot as plt
np.random.seed(6789)
x = np.random.gamma(4, 0.5, 1000)
result = plt.hist(x, bins=20, color='c', edgecolor='k', alpha=0.65)
plt.axvline(x.mean(), color='k', linestyle='dashed', linewidth=1)

min_ylim, max_ylim = plt.ylim()
plt.text(x.mean()*1.1, max_ylim*0.9, 'Mean: {:.2f}'.format(x.mean()))
Run Code Online (Sandbox Code Playgroud)

产生以下结果: 文字平均行