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

使用matplotlib在直方图上以虚线绘制平均值

长孙作人
2023-03-14

我有一个从pandas数据框创建的直方图,我想绘制一条代表数据集平均值的垂直虚线。我已经回顾了这个线程,这正是我正在寻找的样式,但是,我不知道如何使它与我的代码一起工作(如下所示):

import pandas as pd
import matplotlib.pyplot as plt

#import csv file into pandas dataframe
df = pd.read_csv('/path/to/my/file')

#calculating mean
m = df.mean()
#print(m)

#plotting histogram 
df.plot(kind='hist')
#plt.axvline(m, color = 'r', linestyle = 'dashed', linewidth = 2)

我最终收到了以下错误:

 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

不知道这意味着什么,任何帮助都将不胜感激。

编辑:我的数据文件是一个有一列的csv,第一行是一个标题(字符串),所有后续的107行都是从app开始的值。1.0E 11至4.0E 11

假数据(Python 2.7)

import io
import numpy as np
a = np.linspace(1, 4, num = 20)
s = 'E11\n'.join(map(str, a))
s += 'E11'
#print(s)
df = pd.read_csv(io.BytesIO(s))

共有2个答案

宦树
2023-03-14

我认为你应该使用m.all()而不是m。他们使用plt.show()来绘制你的直方图。

#plotting histogram 
# df.plot(kind='hist')
plt.axvline(m.all(), color = 'r', linestyle = 'dashed', linewidth = 2)
plt.show()
宋洲
2023-03-14

m是一个熊猫系列,它有一个索引和一个值-Matplotlib不能知道如何处理它。

>>> print m
1.0E11    2.578947e+11
dtype: float64
>>> type(m)
<class 'pandas.core.series.Series'>
>>>

平均值为m[0]m.values,因此:

plt.axvline(m[0], color = 'r', linestyle = 'dashed', linewidth = 2)
#or
plt.axvline(m.values, color = 'r', linestyle = 'dashed', linewidth = 4)
 类似资料:
  • 我正在使用python中的matplotlib绘制直方图,并希望绘制一条代表数据集平均值的线,以虚线的形式覆盖在直方图上(或者其他颜色也可以)。关于如何在柱状图上画一条线有什么想法吗? 我正在使用plot()命令,但不确定如何绘制垂直线(即,我应该为y轴指定什么值? 谢谢

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

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

  • 问题内容: 我已经使用样条插值法来平滑时间序列,并且还想在绘图中添加一条水平线。但是似乎有一个我无法控制的问题。任何帮助都会非常有帮助。这是我所拥有的: 问题似乎与我对水平线图的使用有关。 问题答案: 您是正确的,我认为这使您失望。您将要重用原始的x轴变量,并使用另一个包含变量的相同长度的numpy数组对其进行绘制。 希望可以解决问题!

  • 我使用样条插值来平滑时间序列,还想在图中添加一条水平线。但是似乎有一个问题超出了我的控制范围。任何帮助都会很有帮助。这是我所拥有的: 问题似乎在于我使用进行水平线绘制。

  • 我有一个pandas数据框,它在一系列中具有以下值 我被指示用Python 3.6在Jupyter笔记本中绘制两个直方图。不用担心,对吧? 我选择了8个垃圾箱,因为这对我来说是最好的。我还被指示用x的对数绘制另一个直方图。 这个直方图看起来很糟糕。我做得不对吗?我试过摆弄这个情节,但我所做的一切似乎都让柱状图看起来更糟。例子: 除了将X的日志绘制为直方图之外,我没有得到任何指示。 我真的很感激任何