Hist ist ein analytikerfreundliches Frontend für Boost-Histogram, das für Python 3.8+ entwickelt wurde (3.6-3.7-Benutzer erhalten ältere Versionen). Sehen Sie, was es Neues gibt.
Sie können diese Bibliothek von PyPI mit pip installieren:
python3 -m pip install " hist[plot,fit] "
Wenn Sie die Plotfunktionen nicht benötigen, können Sie die Extras [plot]
und/oder [fit]
überspringen. [fit]
wird derzeit in WebAssembly nicht unterstützt.
Hist bietet derzeit alles, was Boost-Histogram bietet, und die folgenden Verbesserungen:
Hist erweitert Achsen mit Namen:
name=
ist eine eindeutige Bezeichnung, die jede Achse beschreibt.label=
ist eine optionale Zeichenfolge, die beim Plotten verwendet wird (standardmäßig name
, wenn nicht angegeben).NamedHist
ist ein Hist
, der die meisten Formen des Positionszugriffs deaktiviert und Benutzer dazu zwingt, nur Namen zu verwenden. Die Hist
-Klasse erweitert bh.Histogram
um eine einfachere Konstruktion:
flow=False
ist eine schnelle Möglichkeit, den Fluss für die Achsen beim Bau zu deaktivieren.storage=
kann weggelassen werden, Zeichenfolgen und Speicher können positionell sein.data=
kann ein Histogramm mit vorhandenen Daten initialisieren.Hist.from_columns
kann zur Initialisierung mit einem DataFrame oder Diktat verwendet werden.Hist unterstützt QuickConstruct, ein importfreies Konstruktionssystem, das keine zusätzlichen Importe erfordert:
Hist.new.().().()
.Regular
) oder kurz ( Reg
) sein.data=
) können im Speicher abgelegt werden.Erweiterte Histogrammfunktionen:
.name
und .label
, wie Achsen..density()
berechnet die Dichte als Array..profile(remove_ax)
kann ein ND COUNT-Histogramm in ein (N-1)D MEAN-Histogramm konvertieren..sort(axis)
unterstützt das Sortieren eines Histogramms nach einer kategorialen Achse. Erhält optional eine Funktion zum Sortieren..fill_flattened(...)
wird flacher und gefüllter, einschließlich der Unterstützung für AwkwardArray..integrate(...)
, das die entgegengesetzten Argumente als .project
annimmt.Hist implementiert UHI+; eine Erweiterung des UHI-Systems (Unified Histogram Indexing), das für importfreie Interaktivität entwickelt wurde:
j
, um im Zugriff oder in Slices zu Datenkoordinaten zu wechseln.j
Suffix für Slices zum Rebinen.Schnelle Plotroutinen fördern die Erkundung:
.plot()
stellt 1D- und 2D-Plots bereit (oder verwenden Sie plot1d()
, plot2d()
).plot2d_full()
zeigt 1D-Projekte rund um einen 2D-Plot..plot_ratio(...)
erstellt ein Verhältnisdiagramm zwischen dem Histogramm und einem anderen Histogramm oder einer aufrufbaren Datei..plot_pull(...)
führt einen Pull-Plot durch..plot_pie()
erstellt ein Kreisdiagramm..show()
bietet einen schönen Str-Ausdruck mit Histoprint.Stapel: Arbeiten Sie mit Gruppen von Histogrammen mit identischen Achsen
h.stack(axis)
erstellt werden, wobei der Index oder der Name einer Achse verwendet wird ( StrCategory
-Achsen ideal).hist.stacks.Stack(h1, h2, ...)
erstellen oder from_iter
oder from_dict
verwenden..plot()
und .show()
mit Namen (Plotbeschriftungen verwenden standardmäßig die ursprünglichen Achseninformationen)..project
, *
, +
und -
.Neue Module
intervals
unterstützen Frequentist-Abdeckungsintervalle.Bereit für das Notebook: Hist verfügt über eine wunderschöne Darstellung im Notebook.
from hist import Hist
# Quick construction, no other imports needed:
h = (
Hist . new . Reg ( 10 , 0 , 1 , name = "x" , label = "x-axis" )
. Var ( range ( 10 ), name = "y" , label = "y-axis" )
. Int64 ()
)
# Filling by names is allowed:
h . fill ( y = [ 1 , 4 , 6 ], x = [ 3 , 5 , 2 ])
# Names can be used to manipulate the histogram:
h . project ( "x" )
h [{ "y" : 0.5j + 3 , "x" : 5j }]
# You can access data coordinates or rebin with a `j` suffix:
h [ 0.3j :, :: 2j ] # x from .3 to the end, y is rebinned by 2
# Elegant plotting functions:
h . plot ()
h . plot2d_full ()
h . plot_pull ( Callable )
Verwenden Sie von einem Git-Checkout aus entweder nox oder führen Sie Folgendes aus:
python -m pip install -e .[dev]
Informationen zum Einrichten einer Entwicklungsumgebung finden Sie unter Beitragsrichtlinien.
Wir möchten den Mitwirkenden danken, die dieses Projekt möglich gemacht haben (Emoji-Taste):
Henry Schreiner ? | Nino Lau ? | Chris Burr | Nick Amin | Eduardo Rodrigues | Andrzej Novak | Matthew Feickert |
Kyle Cranmer | Daniel Antrim | Nicholas Smith | Michael Eliachevitch | Jonas Eschle |
Dieses Projekt folgt der All-Contributors-Spezifikation.
Diese Bibliothek wurde hauptsächlich von Henry Schreiner und Nino Lau entwickelt.
Diese Arbeit wurde durch die Kooperationsvereinbarungen OAC-1836650 (IRIS-HEP) und OAC-1450377 (DIANA/HEP) der National Science Foundation unterstützt. Alle in diesem Material geäußerten Meinungen, Erkenntnisse, Schlussfolgerungen oder Empfehlungen sind die der Autoren und spiegeln nicht unbedingt die Ansichten der National Science Foundation wider.