用matplotlib从直方图数据绘制折线图

27 投票
5 回答
53737 浏览
提问于 2025-04-17 10:01

我有一个包含整数的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()

撰写回答