从matplotlib中的直方图数据绘制线图

时间:2012-01-11 15:57:19

标签: python numpy matplotlib

我有一个代表时间段的numpy数组,我正在直方图中绘制以获得一个很好的分布图,使用以下代码:

ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r")

然而,我正在尝试修改此图形以使用线而不是条形来表示完全相同的数据,因此我可以将更多样本覆盖到同一绘图并使它们清晰(否则条形图彼此重叠)。到目前为止我尝试的是将数据数组整理成一个包含(时间,计数)的元组数组,然后使用

绘制它
ax.plot(data[:,0],data[:,1],color="red",lw=2)

然而,这并没有给我任何接近,因为我无法在我的情节中准确模拟直方图的bin选项。有更好的方法吗?

5 个答案:

答案 0 :(得分:40)

我参加聚会很晚 - 但也许这会对其他人有用。我认为你需要做的是将histt​​ype参数设置为'step',即

ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r", histtype = 'step')

另见http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html

答案 1 :(得分:37)

您可以保存hist的输出,然后绘制它。

import numpy as np
import pylab as p

data=np.array(np.random.rand(1000))
y,binEdges=np.histogram(data,bins=100)
bincenters = 0.5*(binEdges[1:]+binEdges[:-1])
p.plot(bincenters,y,'-')
p.show()

答案 2 :(得分:0)

尝试ax.plot(zip(*data)[:][0],zip(*data)[:][1],color="red",lw=2)

答案 3 :(得分:0)

Seaborn满足了我的需求

import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt

sb.distplot(data, hist=False)
plt.show()

答案 4 :(得分:0)

如果使用 seaborn 库,因为 distplot 函数已被弃用:

import seaborn

seaborn.histplot(data, element = 'poly', fill= False)