在直方图中仅绘制特定的 bin
Plot only specific bins in a histogram
绘制直方图的一部分(同时保留错误数据)的最佳方法是什么?
例如,我有一个包含大约 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,但我有理由确定查看 return 类型的 GetBinContent 这不会保留错误,所以我留下了标准的 sqrt 错误。
我还需要对这些数据进行高斯修正 (noBgCounts_plot),高斯是否使用 bins 上的误差来制定其参数的误差? (我假设是这样!)如果是这样,我如何只拟合直方图的一部分?
感谢您的帮助!
SetBinContent
的参数和GetBinContent
的return值真的只有float/double,所以你只复制每个直方图bin的中心值。如果你也想复制错误,那么可以使用SetBinError
和GetBinError
。
在您的情况下,所有垃圾箱都彼此相邻,您最好选择 TAxis::SetRangeUser
或 SetRange
。
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` 设置您的拟合范围。
绘制直方图的一部分(同时保留错误数据)的最佳方法是什么?
例如,我有一个包含大约 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,但我有理由确定查看 return 类型的 GetBinContent 这不会保留错误,所以我留下了标准的 sqrt 错误。
我还需要对这些数据进行高斯修正 (noBgCounts_plot),高斯是否使用 bins 上的误差来制定其参数的误差? (我假设是这样!)如果是这样,我如何只拟合直方图的一部分?
感谢您的帮助!
SetBinContent
的参数和GetBinContent
的return值真的只有float/double,所以你只复制每个直方图bin的中心值。如果你也想复制错误,那么可以使用SetBinError
和GetBinError
。
在您的情况下,所有垃圾箱都彼此相邻,您最好选择 TAxis::SetRangeUser
或 SetRange
。
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` 设置您的拟合范围。