Hi,
Im using pyroot to plot some data, and I’m running into a problem when plotting data points with large values. anything larger than 10^40 seems to be plotted as infinite. I’ve written up a simple macro to demonstrate the problem:
from ROOT import TCanvas, TGraph, TMultiGraph, TPad
from ROOT import gROOT
import numpy as np
from array import array
#canvas
c1 = TCanvas('c1','Cross Sections',200,10,700,500)
c1.SetGrid()
c1.SetLogy()
c1.SetLogx()
#x axis
X=array('f',[.5,1,.5e2,1e2,.5e3,1e3,.5e4,1e4,.5e5,1e5,.5e6,1e6,.5e7,1e7,.5e8,1e8,.5e9,1e9,.5e10,1e10])
y=[]
graph=TMultiGraph("lv_test","Large Value Test")
c=2
for n in range(1,7):
for x in X:
y.append(x**n)
Y=array('f',y)
g=TGraph(20,X,Y)
g.SetMarkerStyle(20)
g.SetMarkerColor(c)
g.SetTitle("y=x^{}".format(str(n)))
graph.Add(g)
y=[]
c+=1
graph.SetMinimum(.01)
graph.SetMaximum(1e60)
graph.Draw("APL")
c1.BuildLegend()
c1.Update()
choice = raw_input("press enter to continue")
c1.SaveAs("lv_test.png")
large_value_test.py (741 Bytes)
when I run it, the points greater then 10^40 are being plotted far to high:
These are very simple functions to plot, so it seems to be a problem in the way the program is handling large numbers. I suspect that the values are being read as infinite as when I run the code without setting the y bounds manually I get this error:
TCanvas::ResizePad:0: RuntimeWarning: Inf/NaN propagated to the pad. Check drawn objects.
TCanvas::ResizePad:0: RuntimeWarning: c1 height changed from 0 to 10
Error in <TCanvas::RangeAxis>: illegal axis coordinates range: xmin=-0.346787, ymin=inf, xmax=10.021189, ymax=inf
*** Break *** segmentation violation
===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
Thread 2 (Thread 0x7f91e2bd3700 (LWP 31234)):
#0 0x00007f91f12ce827 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0x560f5e7dbcd0) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1 do_futex_wait (sem=sem
entry=0x560f5e7dbcd0, abstime=0x0) at sem_waitcommon.c:111
#2 0x00007f91f12ce8d4 in __new_sem_wait_slow (sem=0x560f5e7dbcd0, abstime=0x0) at sem_waitcommon.c:181
#3 0x00007f91f12ce97a in __new_sem_wait (sem=<optimized out>) at sem_wait.c:29
#4 0x00007f91f15eb886 in PyThread_acquire_lock () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#5 0x00007f91f15b5808 in PyEval_RestoreThread () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#6 0x00007f91e2bd615c in time_sleep () from /home/cmwedin/anaconda2/lib/python2.7/lib-dynload/time.so
#7 0x00007f91f15bf039 in PyEval_EvalFrameEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#8 0x00007f91f15c05a9 in PyEval_EvalCodeEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#9 0x00007f91f1548e77 in function_call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#10 0x00007f91f1524653 in PyObject_Call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#11 0x00007f91f15b9002 in PyEval_EvalFrameEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#12 0x00007f91f15bfd7a in PyEval_EvalFrameEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#13 0x00007f91f15bfd7a in PyEval_EvalFrameEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#14 0x00007f91f15c05a9 in PyEval_EvalCodeEx () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#15 0x00007f91f1548d8a in function_call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#16 0x00007f91f1524653 in PyObject_Call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#17 0x00007f91f15332fd in instancemethod_call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#18 0x00007f91f1524653 in PyObject_Call () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#19 0x00007f91f15b5ec8 in PyEval_CallObjectWithKeywords () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#20 0x00007f91f15efd76 in t_bootstrap () from /home/cmwedin/anaconda2/bin/../lib/libpython2.7.so.1.0
#21 0x00007f91f12c66ba in start_thread (arg=0x7f91e2bd3700) at pthread_create.c:333
#22 0x00007f91f08ec41d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Thread 1 (Thread 0x7f91f1ab3700 (LWP 31205)):
#0 0x00007f91f08b10cb in __GI___waitpid (pid=31237, stat_loc=stat_loc
entry=0x7ffc27fd0780, options=options
entry=0) at ../sysdeps/unix/sysv/linux/waitpid.c:29
#1 0x00007f91f0829fbb in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:148
#2 0x00007f91ef27f76d in TUnixSystem::StackTrace() () from /home/cmwedin/software/root/lib/libCore.so
#3 0x00007f91ef281dac in TUnixSystem::DispatchSignals(ESignals) () from /home/cmwedin/software/root/lib/libCore.so
#4 <signal handler called>
#5 0x00007f91e1a2f097 in FT_Done_Glyph () from /home/cmwedin/software/root/lib/libGraf.so
#6 0x00007f91e1a205c8 in TTF::LayoutGlyphs() () from /home/cmwedin/software/root/lib/libGraf.so
#7 0x00007f91d7d03f01 in TGX11TTF::DrawText(int, int, float, float, char const*, TVirtualX::ETextMode) () from /home/cmwedin/software/root/lib/libGX11TTF.so
#8 0x00007f91e1d8ca60 in TPad::PaintText(double, double, char const*) () from /home/cmwedin/software/root/lib/libGpad.so
#9 0x00007f91e19ec892 in TLatex::Analyse(double, double, TLatex::TextSpec_t, char const*, int) () from /home/cmwedin/software/root/lib/libGraf.so
#10 0x00007f91e19e8735 in TLatex::Analyse(double, double, TLatex::TextSpec_t, char const*, int) () from /home/cmwedin/software/root/lib/libGraf.so
#11 0x00007f91e19f04bc in TLatex::PaintLatex1(double, double, double, double, char const*) () from /home/cmwedin/software/root/lib/libGraf.so
#12 0x00007f91e19f122b in TLatex::PaintLatex(double, double, double, double, char const*) () from /home/cmwedin/software/root/lib/libGraf.so
#13 0x00007f91e19dbc14 in TGaxis::PaintAxis(double, double, double, double, double&, double&, int&, char const*, double, bool) () from /home/cmwedin/software/root/lib/libGraf.so
#14 0x00007f91d33d6179 in THistPainter::PaintAxis(bool) () from /home/cmwedin/software/root/lib/libHistPainter.so
#15 0x00007f91d33cbde5 in THistPainter::Paint(char const*) () from /home/cmwedin/software/root/lib/libHistPainter.so
#16 0x00007f91e1637a0d in TMultiGraph::Paint(char const*) () from /home/cmwedin/software/root/lib/libHist.so
#17 0x00007f91e1d9e06b in TPad::PaintModified() () from /home/cmwedin/software/root/lib/libGpad.so
#18 0x00007f91e1d624cc in TCanvas::Update() () from /home/cmwedin/software/root/lib/libGpad.so
#19 0x00007f91f19d002a in ?? ()
#20 0x0000000000000000 in ?? ()
===========================================================
The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum http://root.cern.ch/forum.
Only if you are really convinced it is a bug in ROOT then please submit a
report at http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#5 0x00007f91e1a2f097 in FT_Done_Glyph () from /home/cmwedin/software/root/lib/libGraf.so
#6 0x00007f91e1a205c8 in TTF::LayoutGlyphs() () from /home/cmwedin/software/root/lib/libGraf.so
#7 0x00007f91d7d03f01 in TGX11TTF::DrawText(int, int, float, float, char const*, TVirtualX::ETextMode) () from /home/cmwedin/software/root/lib/libGX11TTF.so
#8 0x00007f91e1d8ca60 in TPad::PaintText(double, double, char const*) () from /home/cmwedin/software/root/lib/libGpad.so
#9 0x00007f91e19ec892 in TLatex::Analyse(double, double, TLatex::TextSpec_t, char const*, int) () from /home/cmwedin/software/root/lib/libGraf.so
#10 0x00007f91e19e8735 in TLatex::Analyse(double, double, TLatex::TextSpec_t, char const*, int) () from /home/cmwedin/software/root/lib/libGraf.so
#11 0x00007f91e19f04bc in TLatex::PaintLatex1(double, double, double, double, char const*) () from /home/cmwedin/software/root/lib/libGraf.so
#12 0x00007f91e19f122b in TLatex::PaintLatex(double, double, double, double, char const*) () from /home/cmwedin/software/root/lib/libGraf.so
#13 0x00007f91e19dbc14 in TGaxis::PaintAxis(double, double, double, double, double&, double&, int&, char const*, double, bool) () from /home/cmwedin/software/root/lib/libGraf.so
#14 0x00007f91d33d6179 in THistPainter::PaintAxis(bool) () from /home/cmwedin/software/root/lib/libHistPainter.so
#15 0x00007f91d33cbde5 in THistPainter::Paint(char const*) () from /home/cmwedin/software/root/lib/libHistPainter.so
#16 0x00007f91e1637a0d in TMultiGraph::Paint(char const*) () from /home/cmwedin/software/root/lib/libHist.so
#17 0x00007f91e1d9e06b in TPad::PaintModified() () from /home/cmwedin/software/root/lib/libGpad.so
#18 0x00007f91e1d624cc in TCanvas::Update() () from /home/cmwedin/software/root/lib/libGpad.so
#19 0x00007f91f19d002a in ?? ()
#20 0x0000000000000000 in ?? ()
===========================================================
large_value_error.txt (7.8 KB)
Has anyone encountered this before?
OS: Ubuntu 16.04
Python version: 2.7.13
Root version: 6.12/04