Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
perceptualcolormap.C File Reference

Detailed Description

View in nbviewer Open in SWAN
A “Perceptual” colormap explicitly identifies a fixed value in the data.

On geographical plot this fixed point can, for instance, the "sea level". A perceptual colormap provides a monotonic luminance variations above and below this fixed value. Unlike the rainbow colormap, this colormap provides a faithful representation of the structures in the data.

This macro demonstrates how to produce the perceptual colormap shown on the figure 2 in this article.

The function Perceptual_Colormap takes two parameters as input:

  1. h, the TH2D to be drawn
  2. val_cut, the Z value defining the "sea level"

Having these parameters this function defines two color maps: one above val_cut and one below.

{
Double_t max = h->GetMaximum(); // Histogram's maximum
Double_t min = h->GetMinimum(); // Histogram's minimum
Double_t per_cut = (val_cut - min) / (max - min); // normalized value of val_cut
Double_t eps = (max - min) * 0.00001; // epsilon
// Definition of the two palettes below and above val_cut
const Int_t Number = 4;
Double_t Red[Number] = {0.11, 0.19, 0.30, 0.89};
Double_t Green[Number] = {0.03, 0.304, 0.60, 0.91};
Double_t Blue[Number] = {0.18, 0.827, 0.50, 0.70};
Double_t Stops[Number] = {0., per_cut, per_cut + eps, 1.};
Int_t nb = 256;
h->SetContour(nb);
TColor::CreateGradientColorTable(Number, Stops, Red, Green, Blue, nb);
// Histogram drawing
h->Draw("colz");
}
{
TH2D *h = new TH2D("h", "Perceptual Colormap", 200, -4, 4, 200, -4, 4);
h->SetStats(0);
for (Int_t i = 0; i < 1000000; i++) {
h->Fill(a - 1.5, b - 1.5, 0.1);
h->Fill(a + 2., b - 3., 0.07);
h->Fill(a - 3., b + 3., 0.05);
h->Fill(a + 1.5, b + 1.5, -0.08);
}
}
#define b(i)
Definition RSha256.hxx:100
#define a(i)
Definition RSha256.hxx:99
#define h(i)
Definition RSha256.hxx:106
int Int_t
Definition RtypesCore.h:45
double Double_t
Definition RtypesCore.h:59
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
R__EXTERN TRandom * gRandom
Definition TRandom.h:62
static Int_t CreateGradientColorTable(UInt_t Number, Double_t *Stops, Double_t *Red, Double_t *Green, Double_t *Blue, UInt_t NColors, Float_t alpha=1., Bool_t setPalette=kTRUE)
Static function creating a color table with several connected linear gradients.
Definition TColor.cxx:2741
2-D histogram with a double per channel (see TH1 documentation)
Definition TH2.h:356
virtual void Rannor(Float_t &a, Float_t &b)
Return 2 numbers distributed following a gaussian with mean=0 and sigma=1.
Definition TRandom.cxx:507
Author
Olivier Couet

Definition in file perceptualcolormap.C.