当前位置: 首页 > 知识库问答 >
问题:

在直方图中绘制平均线(matplotlib)

颛孙正谊
2023-03-14

我正在使用python中的matplotlib绘制直方图,并希望绘制一条代表数据集平均值的线,以虚线的形式覆盖在直方图上(或者其他颜色也可以)。关于如何在柱状图上画一条线有什么想法吗?

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

谢谢

共有3个答案

和魁
2023-03-14

我将查看数据集中的最大值(即柱状图bin值),将该值乘以大于1的数字(例如1.5),然后使用该值定义y轴值。这样,无论直方图中的值如何,它都会显示在直方图上方。

傅新
2023-03-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()))
太叔望
2023-03-14

可以使用plotvline绘制垂直线,但要从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>
 类似资料:
  • 我有一个从pandas数据框创建的直方图,我想绘制一条代表数据集平均值的垂直虚线。我已经回顾了这个线程,这正是我正在寻找的样式,但是,我不知道如何使它与我的代码一起工作(如下所示): 我最终收到了以下错误: 不知道这意味着什么,任何帮助都将不胜感激。 编辑:我的数据文件是一个有一列的csv,第一行是一个标题(字符串),所有后续的107行都是从app开始的值。1.0E 11至4.0E 11 假数据(

  • 所以我在上面创建了这个表格,现在我试图用它来绘制 但是现在我想弄清楚如何画一条均值线,例如,我在图像的右边画了爱尔兰的均值,我不知道如何在这个均值的图表上画一条线。真的,任何帮助感谢。干杯,伙计们。

  • 我想在不显示直方图的情况下绘制密度线,我使用了以下代码:

  • 我正在使用plotly为正在使用的数据集绘制直方图 这幅图很好,但我不清楚如何绘制一条平滑的密度曲线流过直方图的轮廓。 详细参考手册建议, 直方图跟踪用plot_ly或add_trace初始化: 还有一个histornorm函数,我假设它允许用户绘制密度曲线,但我不确定如何使用该函数。 有兴趣了解其他人是如何处理这个问题的。任何提示或建议都非常感谢。

  • 给定一个信号的时间表示图,如何画出相应的时间指标线? 具体来说,给定一个时间索引范围为0到2.6(s)的信号图,我想画垂直红线,指示列表的相应时间索引,我该怎么做?

  • numpy.histogram()函数将输入数组和作为两个参数。 bin数组中的连续元素用作每个bin的边界。 Matplotlib 可以将直方图的数字表示转换为图形。 pyplot子模块的plt()函数将包含数据和数组的数组作为参数,并转换为直方图。