gpt4 book ai didi

c++ - 在直方图中仅绘制特定的 bin

转载 作者:行者123 更新时间:2023-11-28 01:59:28 25 4
gpt4 key购买 nike

绘制直方图的一部分(同时保留错误数据)的最佳方法是什么?

例如,我有一个包含大约 16k 个 bin 的直方图,但我只想绘制 bin 12200 - 13500。但是,此直方图是通过减去另外两个直方图得出的。因此它具有与标准泊松误差数据不同的误差数据(我假设!如果不是,那么我还需要弄清楚如何正确传播误差。)

我的方法是:

TH1D noBgCounts(counts - bgcounts);
auto noBgCounts_plot = new TH1D("Plot", titleString.c_str(), end_bin - start_bin, start_bin, end_bin);
for (int i = 0; i < end_bin - start_bin; ++i) {
noBgCounts_plot->SetBinContent(i, noBgCounts.GetBinContent(start_bin+i));
}

然后绘制 noBgCounts_plot,但我有理由确定查看 GetBinContent 的返回类型这不会保留错误,所以我留下了标准的 sqrt 错误。

我还需要修复此数据的高斯分布 (noBgCounts_plot),高斯分布是否使用 bin 上的误差来制定其参数的误差? (我假设是这样!)如果是这样,我如何只拟合直方图的一部分?

感谢您的帮助!

最佳答案

SetBinContent 的参数和GetBinContent 的返回值实际上只是 float/double,因此您只复制每个直方图 bin 的中心值。如果你也想复制错误,那么可以使用SetBinErrorGetBinError

在您的情况下,所有垃圾箱都彼此相邻,您最好使用 TAxis::SetRangeUserSetRange

TH1F* h = new TH1F("h","H",100,-5,5);
for (int i = 0 ; i < 1000; i ++) {
h->FillRandom("gaus");
}
h->Draw();
h->GetXaxis()->SetRangeUser(-3,-1); // only draw axis range from -3 to -1
h->GetXaxis()->SetRange(10,15); // only draw bins 10 to 15
h->Draw();

TH1::Fit (TF1 *f1, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0) 配合时,参数 xmin 和 xmax` 设置您的拟合范围。

关于c++ - 在直方图中仅绘制特定的 bin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com