在Python中将直方图转换为曲线

时间:2019-04-08 22:34:33

标签: python matplotlib

我有此代码

eval

哪个给我这张图

enter image description here

和此代码

df1 = df['T1'].values

df1 = df1 [~np.isnan(df1 )].tolist()

plt.hist(df1 , bins='auto', range=(0,100))
plt.show()

这给了我

enter image description here

有什么方法可以将直方图转换为曲线,然后将它们组合在一起?

类似这样的东西

enter image description here

2 个答案:

答案 0 :(得分:4)

可能,您想绘制这样的步骤

import numpy as np
import matplotlib.pyplot as plt

d1 = np.random.rayleigh(30, size=9663)
d2 = np.random.rayleigh(46, size=8083)

plt.hist(d1 , bins=np.arange(100), histtype="step")
plt.hist(d2 , bins=np.arange(100), histtype="step")
plt.show()

enter image description here

答案 1 :(得分:1)

您可以使用np.histogram

import numpy as np
from matplotlib import pyplot as plt

fig, ax = plt.subplots()

chisq = np.random.chisquare(3, 1000)
norm = np.random.normal(10, 4, 1000)

chisq_counts, chisq_bins = np.histogram(chisq, 50)
norm_counts, norm_bins = np.histogram(norm, 50)

ax.plot(chisq_bins[:-1], chisq_counts)
ax.plot(norm_bins[:-1], norm_counts)

plt.show()

在您的数据有异常值的特定情况下,我们需要在绘制之前先剪裁

clipped_df1 = np.clip(df1, 0, 100)
clipped_df2 = np.clip(df2, 0, 100)

# continue plotting

enter image description here