ROOT 6.12/07 Reference Guide |
The graph painter class.
Implements all graphs' drawing's options.
Graphs are drawn via the painter TGraphPainter
class. This class implements techniques needed to display the various kind of graphs i.e.: TGraph
, TGraphErrors
, TGraphBentErrors
and TGraphAsymmErrors
.
To draw a graph graph
it's enough to do:
graph->Draw("AL");
The option AL
in the Draw()
method means:
A
),The graph should be drawn as a simple line (option L
).
By default a graph is drawn in the current pad in the current coordinate system. To define a suitable coordinate system and draw the axis the option A
must be specified.
TGraphPainter
offers many options to paint the various kind of graphs.
It is separated from the graph classes so that one can have graphs without the graphics overhead, for example in a batch program.
When a displayed graph is modified, there is no need to call Draw()
again; the image will be refreshed the next time the pad will be updated. A pad is updated after one of these three actions:
TPad::Update
.Graphs can be drawn with the following options:
Option | Description |
---|---|
"A" | Axis are drawn around the graph |
"I" | Combine with option 'A' it draws invisible axis |
"L" | A simple polyline is drawn |
"F" | A fill area is drawn ('CF' draw a smoothed fill area) |
"C" | A smooth Curve is drawn |
"*" | A Star is plotted at each point |
"P" | The current marker is plotted at each point |
"B" | A Bar chart is drawn |
"1" | When a graph is drawn as a bar chart, this option makes the bars start from the bottom of the pad. By default they start at 0. |
"X+" | The X-axis is drawn on the top side of the plot. |
"Y+" | The Y-axis is drawn on the right side of the plot. |
"PFC" | Palette Fill Color: graph's fill color is taken in the current palette. |
"PLC" | Palette Line Color: graph's line color is taken in the current palette. |
"PMC" | Palette Marker Color: graph's marker color is taken in the current palette. |
"RX" | Reverse the X axis. |
"RY" | Reverse the Y axis. |
Drawing options can be combined. In the following example the graph is drawn as a smooth curve (option "C") with markers (option "P") and with axes (option "A").
The following macro shows the option "B" usage. It can be combined with the option "1".
When a graph is painted with the option C
or L
it is possible to draw a filled area on one side of the line. This is useful to show exclusion zones.
This drawing mode is activated when the absolute value of the graph line width (set by SetLineWidth()
) is greater than 99. In that case the line width number is interpreted as:
100*ff+ll = ffll
ll
represent the normal line widthff
represent the filled area width.The current fill area attributes are used to draw the hatched zone.
Three classes are available to handle graphs with error bars: TGraphErrors
, TGraphAsymmErrors
and TGraphBentErrors
. The following drawing options are specific to graphs with error bars:
Option | Description |
---|---|
"Z" | Do not draw small horizontal and vertical lines the end of the error bars. Without "Z", the default is to draw these. |
">" | An arrow is drawn at the end of the error bars. The size of the arrow is set to 2/3 of the marker size. |
"|>" | A filled arrow is drawn at the end of the error bars. The size of the arrow is set to 2/3 of the marker size. |
"X" | Do not draw error bars. By default, graph classes that have errors are drawn with the errors (TGraph itself has no errors, and so this option has no effect.) |
"||" | Draw only the small vertical/horizontal lines at the ends of the error bars, without drawing the bars themselves. This option is interesting to superimpose statistical-only errors on top of a graph with statistical+systematic errors. |
"[]" | Does the same as option "||" except that it draws additional marks at the ends of the small vertical/horizontal lines. It makes plots less ambiguous in case several graphs are drawn on the same picture. |
"0" | By default, when a data point is outside the visible range along the Y axis, the error bars are not drawn. This option forces error bars' drawing for the data points outside the visible range along the Y axis (see example below). |
"2" | Error rectangles are drawn. |
"3" | A filled area is drawn through the end points of the vertical error bars. |
"4" | A smoothed filled area is drawn through the end points of the vertical error bars. |
"5" | Error rectangles are drawn like option "2". In addition the contour line around the boxes is drawn. This can be useful when boxes' fill colors are very light or in gray scale mode. |
gStyle->SetErrorX(dx)
controls the size of the error along x. dx = 0
removes the error along x.
gStyle->SetEndErrorSize(np)
controls the size of the lines at the end of the error bars (when option 1 is used). By default np=1
. (np represents the number of pixels).
A TGraphErrors
is a TGraph
with error bars. The errors are defined along X and Y and are symmetric: The left and right errors are the same along X and the bottom and up errors are the same along Y.
The option "0" shows the error bars for data points outside range.
The option "3" shows the errors as a band.
The option "4" is similar to the option "3" except that the band is smoothed. As the following picture shows, this option should be used carefully because the smoothing algorithm may show some (huge) "bouncing" effects. In some cases it looks nicer than option "3" (because it is smooth) but it can be misleading.
The following example shows how the option "[]" can be used to superimpose systematic errors on top of a graph with statistical errors.
A TGraphAsymmErrors
is like a TGraphErrors
but the errors defined along X and Y are not symmetric: The left and right errors are different along X and the bottom and up errors are different along Y.
A TGraphBentErrors
is like a TGraphAsymmErrors
. An extra parameter allows to bend the error bars to better see them when several graphs are drawn on the same plot.
The drawing options for the polar graphs are the following:
Option | Description |
---|---|
"O" | Polar labels are drawn orthogonally to the polargram radius. |
"P" | Polymarker are drawn at each point position. |
"E" | Draw error bars. |
"F" | Draw fill area (closed polygon). |
"A" | Force axis redrawing even if a polargram already exists. |
"N" | Disable the display of the polar labels. |
When several graphs are painted in the same canvas or when a multi-graph is drawn, it might be useful to have an easy and automatic way to choose their color. The simplest way is to pick colors in the current active color palette. Palette coloring for histogram is activated thanks to the options PFC
(Palette Fill Color), PLC
(Palette Line Color) and PMC
(Palette Marker Color). When one of these options is given to TGraph::Draw
the graph get its color from the current color palette defined by gStyle->SetPalette(…)
. The color is determined according to the number of objects having palette coloring in the current pad.
When a TGraph is drawn, the X-axis is drawn with increasing values from left to right and the Y-axis from bottom to top. The two options RX
and RY
allow to change this order. The option RX
allows to draw the X-axis with increasing values from right to left and the RY
option allows to draw the Y-axis with increasing values from top to bottom. The following example illustrate how to use these options.
Like histograms, graphs can be drawn in logarithmic scale along X and Y. When a pad is set to logarithmic scale with TPad::SetLogx() and/or with TPad::SetLogy() the points building the graph are converted into logarithmic scale. But only the points not the lines connecting them which stay linear. This can be clearly seen on the following example:
Definition at line 29 of file TGraphPainter.h.
Public Member Functions | |
TGraphPainter () | |
Default constructor. More... | |
virtual | ~TGraphPainter () |
Destructor. More... | |
void | ComputeLogs (Int_t npoints, Int_t opt) |
Compute the logarithm of global variables gxwork and gywork according to the value of Options and put the results in the global variables gxworkl and gyworkl . More... | |
virtual Int_t | DistancetoPrimitiveHelper (TGraph *theGraph, Int_t px, Int_t py) |
Compute distance from point px,py to a graph. More... | |
virtual void | DrawPanelHelper (TGraph *theGraph) |
Display a panel with all histogram drawing options. More... | |
virtual void | ExecuteEventHelper (TGraph *theGraph, Int_t event, Int_t px, Int_t py) |
Execute action corresponding to one event. More... | |
virtual char * | GetObjectInfoHelper (TGraph *theGraph, Int_t px, Int_t py) const |
virtual void | PaintGraph (TGraph *theGraph, Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt) |
[Control function to draw a graph.]($GP01) More... | |
void | PaintGraphAsymmErrors (TGraph *theGraph, Option_t *option) |
Paint this TGraphAsymmErrors with its current attributes. More... | |
void | PaintGraphBentErrors (TGraph *theGraph, Option_t *option) |
[Paint this TGraphBentErrors with its current attributes.]($GP03) More... | |
void | PaintGraphErrors (TGraph *theGraph, Option_t *option) |
[Paint this TGraphErrors with its current attributes.]($GP03) More... | |
virtual void | PaintGrapHist (TGraph *theGraph, Int_t npoints, const Double_t *x, const Double_t *y, Option_t *chopt) |
This is a service method used by THistPainter to paint 1D histograms. More... | |
void | PaintGraphPolar (TGraph *theGraph, Option_t *option) |
[Paint this TGraphPolar with its current attributes.]($GP04) More... | |
void | PaintGraphQQ (TGraph *theGraph, Option_t *option) |
Paint this graphQQ. No options for the time being. More... | |
void | PaintGraphReverse (TGraph *theGraph, Option_t *option) |
Paint theGraph reverting values along X and/or Y axis. a new graph is created. More... | |
void | PaintGraphSimple (TGraph *theGraph, Option_t *option) |
Paint a simple graph, without errors bars. More... | |
void | PaintHelper (TGraph *theGraph, Option_t *option) |
Paint a any kind of TGraph. More... | |
void | PaintPolyLineHatches (TGraph *theGraph, Int_t n, const Double_t *x, const Double_t *y) |
Paint a polyline with hatches on one side showing an exclusion zone. More... | |
void | PaintStats (TGraph *theGraph, TF1 *fit) |
Paint the statistics box with the fit info. More... | |
void | Smooth (TGraph *theGraph, Int_t npoints, Double_t *x, Double_t *y, Int_t drawtype) |
Smooth a curve given by N points. More... | |
Public Member Functions inherited from TVirtualGraphPainter | |
TVirtualGraphPainter () | |
virtual | ~TVirtualGraphPainter () |
Public Member Functions inherited from TObject | |
TObject () | |
TObject constructor. More... | |
TObject (const TObject &object) | |
TObject copy ctor. More... | |
virtual | ~TObject () |
TObject destructor. More... | |
void | AbstractMethod (const char *method) const |
Use this method to implement an "abstract" method that you don't want to leave purely abstract. More... | |
virtual void | AppendPad (Option_t *option="") |
Append graphics object to current pad. More... | |
virtual void | Browse (TBrowser *b) |
Browse object. May be overridden for another default action. More... | |
ULong_t | CheckedHash () |
Checked and record whether for this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object. More... | |
virtual const char * | ClassName () const |
Returns name of class to which the object belongs. More... | |
virtual void | Clear (Option_t *="") |
virtual TObject * | Clone (const char *newname="") const |
Make a clone of an object using the Streamer facility. More... | |
virtual Int_t | Compare (const TObject *obj) const |
Compare abstract method. More... | |
virtual void | Copy (TObject &object) const |
Copy this to obj. More... | |
virtual void | Delete (Option_t *option="") |
Delete this object. More... | |
virtual Int_t | DistancetoPrimitive (Int_t px, Int_t py) |
Computes distance from point (px,py) to the object. More... | |
virtual void | Draw (Option_t *option="") |
Default Draw method for all objects. More... | |
virtual void | DrawClass () const |
Draw class inheritance tree of the class to which this object belongs. More... | |
virtual TObject * | DrawClone (Option_t *option="") const |
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad) . More... | |
virtual void | Dump () const |
Dump contents of object on stdout. More... | |
virtual void | Error (const char *method, const char *msgfmt,...) const |
Issue error message. More... | |
virtual void | Execute (const char *method, const char *params, Int_t *error=0) |
Execute method on this object with the given parameter string, e.g. More... | |
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=0) |
Execute method on this object with parameters stored in the TObjArray. More... | |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
Execute action corresponding to an event at (px,py). More... | |
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
Issue fatal error message. More... | |
virtual TObject * | FindObject (const char *name) const |
Must be redefined in derived classes. More... | |
virtual TObject * | FindObject (const TObject *obj) const |
Must be redefined in derived classes. More... | |
virtual Option_t * | GetDrawOption () const |
Get option used by the graphics system to draw this object. More... | |
virtual const char * | GetIconName () const |
Returns mime type name of object. More... | |
virtual const char * | GetName () const |
Returns name of object. More... | |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
Returns string containing info about the object at position (px,py). More... | |
virtual Option_t * | GetOption () const |
virtual const char * | GetTitle () const |
Returns title of object. More... | |
virtual UInt_t | GetUniqueID () const |
Return the unique object id. More... | |
virtual Bool_t | HandleTimer (TTimer *timer) |
Execute action in response of a timer timing out. More... | |
virtual ULong_t | Hash () const |
Return hash value for this object. More... | |
Bool_t | HasInconsistentHash () const |
Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e. More... | |
virtual void | Info (const char *method, const char *msgfmt,...) const |
Issue info message. More... | |
virtual Bool_t | InheritsFrom (const char *classname) const |
Returns kTRUE if object inherits from class "classname". More... | |
virtual Bool_t | InheritsFrom (const TClass *cl) const |
Returns kTRUE if object inherits from TClass cl. More... | |
virtual void | Inspect () const |
Dump contents of this object in a graphics canvas. More... | |
void | InvertBit (UInt_t f) |
virtual Bool_t | IsEqual (const TObject *obj) const |
Default equal comparison (objects are equal if they have the same address in memory). More... | |
virtual Bool_t | IsFolder () const |
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects). More... | |
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
virtual Bool_t | IsSortable () const |
R__ALWAYS_INLINE Bool_t | IsZombie () const |
virtual void | ls (Option_t *option="") const |
The ls function lists the contents of a class on stdout. More... | |
void | MayNotUse (const char *method) const |
Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary). More... | |
virtual Bool_t | Notify () |
This method must be overridden to handle object notification. More... | |
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
Use this method to declare a method obsolete. More... | |
void | operator delete (void *ptr) |
Operator delete. More... | |
void | operator delete[] (void *ptr) |
Operator delete []. More... | |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (const TObject &rhs) |
TObject assignment operator. More... | |
virtual void | Paint (Option_t *option="") |
This method must be overridden if a class wants to paint itself. More... | |
virtual void | Pop () |
Pop on object drawn in a pad to the top of the display list. More... | |
virtual void | Print (Option_t *option="") const |
This method must be overridden when a class wants to print itself. More... | |
virtual Int_t | Read (const char *name) |
Read contents of object with specified name from the current directory. More... | |
virtual void | RecursiveRemove (TObject *obj) |
Recursively remove this object from a list. More... | |
void | ResetBit (UInt_t f) |
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
Save this object in the file specified by filename. More... | |
virtual void | SavePrimitive (std::ostream &out, Option_t *option="") |
Save a primitive as a C++ statement(s) on output stream "out". More... | |
void | SetBit (UInt_t f, Bool_t set) |
Set or unset the user status bits as specified in f. More... | |
void | SetBit (UInt_t f) |
virtual void | SetDrawOption (Option_t *option="") |
Set drawing option for object. More... | |
virtual void | SetUniqueID (UInt_t uid) |
Set the unique object id. More... | |
virtual void | SysError (const char *method, const char *msgfmt,...) const |
Issue system error message. More... | |
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
Int_t | TestBits (UInt_t f) const |
virtual void | UseCurrentStyle () |
Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked. More... | |
virtual void | Warning (const char *method, const char *msgfmt,...) const |
Issue warning message. More... | |
virtual Int_t | Write (const char *name=0, Int_t option=0, Int_t bufsize=0) |
Write this object to the current directory. More... | |
virtual Int_t | Write (const char *name=0, Int_t option=0, Int_t bufsize=0) const |
Write this object to the current directory. More... | |
Static Public Member Functions | |
static void | SetMaxPointsPerLine (Int_t maxp=50) |
Static function to set fgMaxPointsPerLine for graph painting. More... | |
Static Public Member Functions inherited from TVirtualGraphPainter | |
static TVirtualGraphPainter * | GetPainter () |
Static function returning a pointer to the current graph painter. More... | |
static void | SetPainter (TVirtualGraphPainter *painter) |
Static function to set an alternative histogram painter. More... | |
Static Public Member Functions inherited from TObject | |
static Long_t | GetDtorOnly () |
Return destructor only flag. More... | |
static Bool_t | GetObjectStat () |
Get status of object stat flag. More... | |
static void | SetDtorOnly (void *obj) |
Set destructor only flag. More... | |
static void | SetObjectStat (Bool_t stat) |
Turn on/off tracking of objects in the TObjectTable. More... | |
Static Protected Attributes | |
static Int_t | fgMaxPointsPerLine = 50 |
Additional Inherited Members | |
Public Types inherited from TObject | |
enum | { kIsOnHeap = 0x01000000, kNotDeleted = 0x02000000, kZombie = 0x04000000, kInconsistent = 0x08000000, kBitMask = 0x00ffffff } |
enum | { kSingleKey = BIT(0), kOverwrite = BIT(1), kWriteDelete = BIT(2) } |
enum | EDeprecatedStatusBits { kObjInCanvas = BIT(3) } |
enum | EStatusBits { kCanDelete = BIT(0), kMustCleanup = BIT(3), kIsReferenced = BIT(4), kHasUUID = BIT(5), kCannotPick = BIT(6), kNoContextMenu = BIT(8), kInvalidObject = BIT(13) } |
Protected Member Functions inherited from TObject | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
Interface to ErrorHandler (protected). More... | |
void | MakeZombie () |
#include <TGraphPainter.h>
TGraphPainter::TGraphPainter | ( | ) |
Default constructor.
Definition at line 539 of file TGraphPainter.cxx.
|
virtual |
Destructor.
Definition at line 547 of file TGraphPainter.cxx.
Compute the logarithm of global variables gxwork
and gywork
according to the value of Options and put the results in the global variables gxworkl
and gyworkl
.
npoints : Number of points in gxwork and in gywork.
Definition at line 562 of file TGraphPainter.cxx.
Compute distance from point px,py to a graph.
Compute the closest distance of approach from point px,py to this line. The distance is computed in pixels units.
Implements TVirtualGraphPainter.
Definition at line 590 of file TGraphPainter.cxx.
Display a panel with all histogram drawing options.
Implements TVirtualGraphPainter.
Definition at line 673 of file TGraphPainter.cxx.
|
virtual |
Execute action corresponding to one event.
This member function is called when a graph is clicked with the locator.
If the left mouse button is clicked on one of the line end points, this point follows the cursor until button is released.
If the middle mouse button clicked, the line is moved parallel to itself until the button is released.
Implements TVirtualGraphPainter.
Definition at line 698 of file TGraphPainter.cxx.
Implements TVirtualGraphPainter.
Definition at line 978 of file TGraphPainter.cxx.
|
virtual |
[Control function to draw a graph.]($GP01)
Implements TVirtualGraphPainter.
Definition at line 1036 of file TGraphPainter.cxx.
Paint this TGraphAsymmErrors with its current attributes.
Definition at line 2180 of file TGraphPainter.cxx.
[Paint this TGraphBentErrors with its current attributes.]($GP03)
Definition at line 2427 of file TGraphPainter.cxx.
[Paint this TGraphErrors with its current attributes.]($GP03)
Definition at line 2683 of file TGraphPainter.cxx.
|
virtual |
This is a service method used by THistPainter
to paint 1D histograms.
It is not used to paint TGraph.
Input parameters:
The aspect of the histogram is done according to the value of the chopt.
Option | Description |
---|---|
"R" | Graph is drawn horizontally, parallel to X axis. (default is vertically, parallel to Y axis).If option R is selected the user must give 2 values for Y (y[0]=YMIN and y[1]=YMAX) or N values for X, one for each channel. Otherwise the user must give, N values for Y, one for each channel or 2 values for X (x[0]=XMIN and x[1]=XMAX) |
"L" | A simple polyline between every points is drawn. |
"H" | An Histogram with equidistant bins is drawn as a polyline. |
"F" | An histogram with equidistant bins is drawn as a fill area. Contour is not drawn unless chopt='H' is also selected.. |
"N" | Non equidistant bins (default is equidistant). If N is the number of channels array X and Y must be dimensioned as follow: If option R is not selected (default) then the user must give (N+1) values for X (limits of channels) or N values for Y, one for each channel. Otherwise the user must give (N+1) values for Y (limits of channels). or N values for X, one for each channel |
"F1" | Idem as 'F' except that fill area base line is the minimum of the pad instead of Y=0. |
"F2" | Draw a Fill area polyline connecting the center of bins |
"C" | A smooth Curve is drawn. |
"*" | A Star is plotted at the center of each bin. |
"P" | Idem with the current marker. |
"P0" | Idem with the current marker. Empty bins also drawn. |
"B" | A Bar chart with equidistant bins is drawn as fill areas (Contours are drawn). |
"][" | "Cutoff" style. When this option is selected together with H option, the first and last vertical lines of the histogram are not drawn. |
Implements TVirtualGraphPainter.
Definition at line 1455 of file TGraphPainter.cxx.
[Paint this TGraphPolar with its current attributes.]($GP04)
Definition at line 2930 of file TGraphPainter.cxx.
Paint this graphQQ. No options for the time being.
Definition at line 3226 of file TGraphPainter.cxx.
Paint theGraph reverting values along X and/or Y axis. a new graph is created.
Definition at line 3286 of file TGraphPainter.cxx.
Paint a simple graph, without errors bars.
Definition at line 3419 of file TGraphPainter.cxx.
Paint a any kind of TGraph.
Implements TVirtualGraphPainter.
Definition at line 987 of file TGraphPainter.cxx.
void TGraphPainter::PaintPolyLineHatches | ( | TGraph * | theGraph, |
Int_t | n, | ||
const Double_t * | x, | ||
const Double_t * | y | ||
) |
Paint a polyline with hatches on one side showing an exclusion zone.
x and y are the the vectors holding the polyline and n the number of points in the polyline and w
the width of the hatches. w
can be negative. This method is not meant to be used directly. It is called automatically according to the line style convention.
Definition at line 3457 of file TGraphPainter.cxx.
Paint the statistics box with the fit info.
Implements TVirtualGraphPainter.
Definition at line 3662 of file TGraphPainter.cxx.
Static function to set fgMaxPointsPerLine
for graph painting.
When graphs are painted with lines, they are split into chunks of length fgMaxPointsPerLine
. This allows to paint line with an "infinite" number of points. In some case this "chunks painting" technic may create artefacts at the chunk's boundaries. For instance when zooming deeply in a PDF file. To avoid this effect it might be necessary to increase the chunks' size using this function: TGraphPainter::SetMaxPointsPerLine(20000)
.
Definition at line 4249 of file TGraphPainter.cxx.
void TGraphPainter::Smooth | ( | TGraph * | theGraph, |
Int_t | npoints, | ||
Double_t * | x, | ||
Double_t * | y, | ||
Int_t | drawtype | ||
) |
Smooth a curve given by N points.
The original code is from an underlaying routine for Draw based on the CERN GD3 routine TVIPTE:
Author - Marlow etc. Modified by - P. Ward Date - 3.10.1973
This method draws a smooth tangentially continuous curve through the sequence of data points P(I) I=1,N where P(I)=(X(I),Y(I)). The curve is approximated by a polygonal arc of short vectors. The data points can represent open curves, P(1) != P(N) or closed curves P(2) == P(N). If a tangential discontinuity at P(I) is required, then set P(I)=P(I+1). Loops are also allowed.
Reference Marlow and Powell, Harwell report No.R.7092.1972 MCCONALOGUE, Computer Journal VOL.13, NO4, NOV1970P p392 6
Definition at line 3775 of file TGraphPainter.cxx.
|
staticprotected |
Definition at line 59 of file TGraphPainter.h.