corr_SmallestInterval_floatCutEff_linearBkg_100.pdf (1.7 MB) Dear Forum,
I am having trouble producing a plot of correlation between parameters like the one attached in pdf.
Specifically, I have a set of 100 parameters sampled from a distribution which I would like to plot as a triangular matrix of plots where the diagonal elements are TH1D distributions of parameter i and the off-diagonal ones are TH2D of correlation of parameter i vs j.
I do have a script that does that and it works as long as the number of parameters stays below 50. I have a method that builds the TCanvas and TPad for plotting as
TPad* MarkovChainManager::GetPlottingPad( std::string header, std::string footer, int canvasWidth, int canvasHeight, int nCol, int nRow )
{
int columns = nCol;
int rows = nRow;
fCanvas = new TCanvas(("c_"+header).c_str(), header.c_str(), canvasWidth, canvasHeight);
TPaveLabel* title = new TPaveLabel(0.1,0.96,0.9,0.99,("c_"+header).c_str());
title->Draw();
TDatime* now = new TDatime();
TPaveLabel* date = new TPaveLabel(0.7,0.01,0.9,0.03,now->AsString());
date->Draw();
if( footer != "" ){
TPaveLabel* footLabel = new TPaveLabel(0.1,0.01,0.6,0.03, footer.c_str() );
footLabel->Draw();
}
TPad* graphPad = new TPad("Graphs","Graphs",0.01,0.05,0.95,0.95);
graphPad->Draw();
graphPad->cd();
graphPad->Divide(columns,rows);
return graphPad;
}
where fCanvas is a private class member. Then in another method, I would go
TPad* myPad = this->GetPlottingPad( "title", "", (int)(size*nPar), (int)(size*nPar), (int)nPar, (int)nPar );
myPad->cd( padID );
h->Draw();
where TH1D* h is a histogram defined and filled before, and padID can run from 1 to nPar * nPar. The issue I have is that no matter what size I assign to the canvas through the GetPlottingPad method (I tried values from 200 to 2000),
myPad->cd( padID )
returns 0, meaning TPad cannot retrieve correctly the pad.
TPad is correctly created (different from nullptr), and the whole code works just fine if
nPar <= 50
Is this an internal limitation of ROOT to prevent abnormal memory allocation? Is there a workaround to get the plot I want?
Thanks a lot for your time and suggestions.
I do apologize if the topic was already raised up by other users but I wasn’t able to find it.
Best,
Guido
ROOT Version: 6.06.04
Platform: scientific linux 6.6 x86_64
Compiler: g++ 4.9.3