Как я могу построить произвольную функцию / линию и гистограмму (не функцию для самой гистограммы) с питоном и пандами? - PullRequest
0 голосов
/ 17 июня 2019

Итак, я провожу некоторые симуляции для проблемы, над которой я работаю, и меня интересуют две величины: распределение плотности моих данных, значения которых превышают 1 (> 1), и просто простой% от того, сколько моих данных являются значениями.ниже 1 (<1).С учетом сказанного, я хотел бы нанести на гистограмму какую-то линию или функцию (которую я буду строить для разных временных шагов), чтобы я мог видеть, как развивается эта часть данных. </p>

Здесьвот что я использовал для построения графика:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
#is a simple single column file
data=pd.read_csv(file_name,header=None)
#this effetively gives me the value i want to show on top of the histogram
data[data<1].dropna().count()/data.count()

fig = plt.figure(figsize=(5,8))
axis=fig.add_axes([0,0,1,1])
data[data>=1].hist(ax=axis,bins=int(data.max()),density=True,cumulative=-1,alpha=0.5,label='Original')

#Here would go some way in which i can plot a line, or anything that is easy to read, containing the data i mentioned before.

axis.set_title('Stage:%d' % 3)
axis.set_xlabel('w')
axis.set_ylabel('p(w)')
axis.set_yscale('log')
axis.set_xscale('log')
axis.set_ylim((0.001,1))
plt.legend()

Я посмотрел вокруг и все, что я могу найти, это люди, спрашивающие, как построить функцию, соответствующую гистограмме, а не произвольную функцию.

Тем не менее, любые другие идеи, которые не включают строку / функцию / строку, но которые легко читаются, также будут полезны.

Заранее спасибо.

РЕДАКТИРОВАТЬ: я понял,Это было намного проще, чем я думал.Вот код:

fig = plt.figure(figsize=(5,8))
axis=fig.add_axes([0,0,1,1])
data=pd.read_csv(file_name,header=None)
size=int(data.max())
value=float(data[data<1].dropna().count()/data.count())
x=np.array(range(size))
y=np.ones(size)*value
data[data>=1].hist(ax=axis,bins=int(data.max()),density=True,cumulative=-1)
axis.plot(x,y)
axis.set_title('Title')
axis.set_xlabel('w')
axis.set_ylabel('p(w)')
axis[0].set_yscale('log')
axis[0].set_xscale('log')
axis[0].set_ylim((0.001,1))

...