Gráficas usando el archivo .root

Usando el archivo .root que cree con el notebook csv_to_root_meteorite.ipynb voy a hacer unas pocas gráficas, principalmente para familiarizarme un poco mas con ROOT, sin embargo, creo que no es la mejor herramienta para trabajar estos datos en específico; claro, esta es la opinión de una persona que es la primera vez que usa ROOT y no conoce todos sus poderes.

In [1]:
import ROOT
Welcome to JupyROOT 6.18/04
In [2]:
%jsroot on
In [3]:
f = ROOT.TFile.Open("meteorite.root")
In [4]:
# -- "data" es el nombre que use para convertir el .csv a .root 
# -- TTree *tree = new TTree("data","data from csv file");
tree = f.Get("data")
In [5]:
tree
Out[5]:
<ROOT.TTree object ("data") at 0x3fb0260>
In [6]:
tree.GetEntries()
Out[6]:
31705

Histograma por años

Veamos el conteo de meteoritos por años

In [7]:
canvas_year = ROOT.TCanvas("Canvas_year","Conteo meteoritos por año",800,600)
In [8]:
hist_year = ROOT.TH1F("variable","Number meteorites per year; Year ; Number of meteorites ",10,900,2100)
In [9]:
for event in tree:
    hist_year.Fill(tree.year)
    
print("Done!")
Done!
In [10]:
hist_year.SetFillColor(46)
hist_year.SetLineColor(46)
hist_year.Draw()
canvas_year.Draw()

Histograma por masa

Veamos el conteo de meteoritos de acuerdo a la masa.

In [11]:
# -- para determinar los límites del eje x, veo el número de valor únicos de masa, el máximo y el mínimo
import pandas as pd
import numpy as np

datanew = pd.read_csv('meteorite-landings_clean.csv')
print(len(np.unique(datanew['mass'])))
print(max(np.unique(datanew['mass'])))
print(min(np.unique(datanew['mass'])))
10303
60000000.0
0.0
In [12]:
sorted(np.unique(datanew['mass']))[-9:]
Out[12]:
[23000000.0,
 24000000.0,
 24300000.0,
 26000000.0,
 28000000.0,
 30000000.0,
 50000000.0,
 58200000.0,
 60000000.0]
In [13]:
canvas_mass = ROOT.TCanvas("Canvas_mass","Conteo meteoritos por masa",800,600)
# -- estoy reduciendo bastante el numero de bins (10) para poder ver mejor la gráfica
hist_mass = ROOT.TH1F("variable","Number meteorites per mass; Mass ; Number of meteorites ",10,0,60.e3)
for event in tree:
    hist_mass.Fill(tree.mass)
    
print("Done!")

hist_mass.SetFillColor(30)
hist_mass.SetLineColor(30)
hist_mass.Draw()
canvas_mass.Draw()
Done!
Warning in <TFile::Append>: Replacing existing TH1: variable (Potential memory leak).
In [ ]: