Преобразовать гистограмму в кривую в Python - PullRequest
1 голос
/ 09 апреля 2019

У меня есть этот код

df1 = df['T1'].values

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

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

Что дает мне этот график

enter image description here

и этот код

df2 = df['T2'].values

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

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

что дает мне это

enter image description here

Можно ли как-нибудь преобразовать гистограммы в кривые, а затем объединить их вместе?

как то так

enter image description here

Ответы [ 2 ]

4 голосов
/ 09 апреля 2019

Возможно, вы хотите нарисовать шаги, подобные этой

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 голос
/ 09 апреля 2019

Вы можете использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...