如何使刻度线指向图中的负方向,而不更改轴的编号和标题的位置

How to make tick marks point towards the negative direction in a plot without changing the placement of the numbering and title of an axis

本文关键字:位置 标题 编号 方向 何使刻      更新时间:2023-10-16

我正在使用ROOT制作直方图,并尝试编辑其美学。如何使绘图上的刻度线指向负方向,同时使绘图的编号和标题也低于 x 轴?

通过此链接,SetTicks("-")可用于反转刻度线,使它们指向负方向。当我在代码中将其用于 x 轴时,绘图按预期运行,刻度线指向负方向,但是,x 轴的编号和标题也与刻度线一起反转,两者都显示在图的上方和内部。这让我感到困惑,因为我认为SetTicks()应该只更改刻度线的方向,而不是标题。我还更改了GetXaxis->SetTitle()的位置,以查看定位在代码中是否重要,但似乎并不重要。 (注意:代码中的所有内容都已预定义。

for (unsigned int i = 0; i < Nhistos; i++) {
fexpmentname[i] = new TFile(Form("total/nuifo_%s.root",expmentname[i].c_str()), "read");
hnumu[i] = (TH1D*)fexpmentname[i]->Get("flux/hflux_numu");
hnumu[i]->SetStats(0);
hnumu[i]->SetLineColor(color[i]);
leg->AddEntry(hnumu[i], Form("%s", lexpmentname[i].c_str()), "l");
if (i == 0) {
hnumu[i]->GetXaxis()->SetTitle("Neutrino energy (GeV)");
hnumu[i]->GetYaxis()->SetTitle("# #nu_{#mu} neutrino flux (#nu_{#mu} / m^{2} / GeV / 2.5 x 10^{8} POT)");
hnumu[i]->GetYaxis()->SetTickLength(0);
hnumu[i]->GetXaxis()->SetTicks("-");
hnumu[i]->GetXaxis()->SetTickLength(0.015);
hnumu[i]->SetTitle("#nu_{#mu} Fluxes at Various Experiments");
hnumu[i]->Draw();
}
else{
hnumu[i]->Draw("same");
}
}

同样,我希望输出是这样的,x 轴的刻度线、编号和标题低于 x 轴,但只有刻度线是。我目前对此没有解释。

经过一堆实验,我找到了自己问题的答案。您所要做的就是简单地设置一个负即时报价长度并摆脱SetTicks("-")

hnumu[i]->GetXaxis()->SetTickLength(-0.015);