用matplotlib从直方图数据绘制折线图
我有一个包含整数的numpy数组,这些整数代表时间段。我现在用这些数据画直方图,以便得到一个漂亮的分布图,使用的代码如下:
ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r")
不过,我想把这个图改成用线来表示同样的数据,而不是用柱子,这样我可以在同一个图上叠加更多的样本,让它们更清晰(否则柱子会重叠在一起)。我目前尝试的做法是把数据数组整理成一个包含(时间,数量)的元组数组,然后用下面的代码来绘制:
ax.plot(data[:,0],data[:,1],color="red",lw=2)
但是这样做的结果并没有接近我想要的,因为我无法准确模拟直方图中的分箱选项。有没有更好的方法来实现这个呢?
5 个回答
3
Seaborn有我需要的东西:
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
sb.distplot(data, hist=False)
plt.show()
52
我来得有点晚,不过也许这对其他人有帮助。我觉得你需要做的是把 histtype 参数设置为 'step',也就是这样:
ax.hist(data,bins=100,range=(minimum,maximum),facecolor="r", histtype = 'step')
另外,你可以查看这个链接了解更多信息:http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo_extended.html
39
你可以先保存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()