If I call TH1::GetXaxis()->SetRange
, the Yaxis range automatically adjusts to zoom in on the selected bins. For THStack::GetXaxis()->SetRange
, however, this is not the case–the Yaxis retains the same range it had before. Is there a way to automatically adjust the Yaxis to reflect the new Xaxis range (as for TH1
), do I have to calculate the proper Yaxis range manually, or is this a bug? Reproducer follows.
import ROOT as r
h1 = r.TH1F("h1", "h1", 100, 0, 100)
for i in range(int(1e6)):
h1.Fill(r.gRandom.Gaus(20, 5))
c = r.TCanvas()
h1.Draw() # full range shown
TH1_FullRange.pdf (14.2 KB)
h1.GetXaxis().SetRange(1, 6)
c.Update() # Yaxis zooms in to show content in bins 1 to 6
TH1_Zoomed.pdf (13.2 KB)
h2 = r.TH1F("h2", "h2", 100, 0, 100)
for i in range(10):
h2.Fill(r.gRandom.Gaus(9, 5))
hs = r.THStack()
hs.Add(h1)
hs.Add(h2)
hs.Draw() # note Yaxis range
THStack_FullRange.pdf (14.5 KB)
hs.GetXaxis().SetRange(1, 6)
c.Update() # Yaxis range has not changed, making it difficult to see the bins
THStack_Zoomed.pdf (13.5 KB)
ROOT Version: 6.22/06
Platform: macOS
Compiler: Not Provided