Как я могу нормализовать гистограмму по определенному пользователем номеру в matplotlib? - PullRequest
0 голосов
/ 28 марта 2019

Я не могу понять, как именно масштабировать гистограмму, используя matplotlib, что я могу сделать в ROOT.Я не хочу, чтобы область нормализовалась до 1. Я хочу масштабировать гистограмму по заданному значению, которое я получил, выполняя внешние вычисления.

Я уже пробовал использовать параметр плотности = True, который, как я знаю, явноне то, что я хочу.

Вот как я получаю правильную гистограмму в ROOT:

root [4] tree1->Draw("distance>>h1(110,0,1100)") 
Info in <TCanvas::MakeDefCanvas>:  created default TCanvas with name c1
root [5] tree2->Draw("distance>>h2(110,0,1100)") 
root [6] h2->Scale(0.64156638885)
root [7] h1->Draw("hist")
root [8] h2->Draw("hist same")
root [9] auto legend = new TLegend(0.1,0.7,0.48,0.9);
root [10] legend->AddEntry(h2,"OFF BEAM","l");
root [11] legend->AddEntry(h1,"ON BEAM","l");
root [12] h2->SetLineColor(kRed)
root [13] h1->SetLineColor(kBlue)
root [14] legend->Draw();
root [15] h1->Draw("hist")
root [16] h2->Draw("hist same")
root [17] legend->Draw();
root [18] gStyle->SetOptStat(0)

Здесь вы можете видеть, что я применил правильный коэффициент масштабирования 0.64156638885, и он дает мне нужные графики вROOT То, что я хочу видеть в matplotlib

Также вот что у меня есть в matplotlib:

import numpy as np
import matplotlib.pylab as plt
import pandas as pd
from root_numpy import root2array

df_Sps_beam_on = pd.DataFrame( root2array( myfile_beam_on,'/gammacorrelation/Sps_Correlationtree' ) )
df_Sps_beam_off = pd.DataFrame( root2array( myfile_beam_off,'/gammacorrelation/Sps_Correlationtree' ) )
plt.hist(df_Sps_beam_on['distance'].values,bins=BINS,histtype='step',lw=2,label='beam_on')
plt.hist(df_Sps_beam_off['distance'].values,bins=BINS,histtype='step',lw=2,label='beam_off')
plt.show()

...