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

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

我正在使用 ROOT 绘制直方图,我正在尝试编辑它的美学效果。如何使图上的刻度线指向负方向,同时保持图的编号和标题也在 x-axis 下方?

由此 linkSetTicks("-") 可用于反转刻度线,使其指向负方向。当我在 x-axis 的代码中使用它时,绘图按应有的方式运行,刻度线指向负方向,但是,x-axis 的编号和标题也随着刻度线,两者都显示在图的上方和内部。这让我感到困惑,因为我认为 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-axis 的刻度线、编号和标题低于 x-axis,但只有刻度线在。我目前对此没有任何解释。

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

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