Re: [ROOT] Saving pads as postscript

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Feb 18 2003 - 19:18:00 MET


Hi Mike,

You can replace your savepad function with this variant

void savePad(const char* pad_name, const char* outdir, const char* tag)
{
    //I want to be able to resize the pad here, but don't know how
    char name[100];
    sprintf(name,"%s%s_%s", outdir, pad_name, tag);
    const char* n = gPad->GetName();
    cout <<"Write file:\t"<<name<<"\tfor pad:\t"<<n<<endl;
    TPad *pad = gPad;
    TCanvas *temp = new TCanvas();
    TPad *clone = (TPad*)pad->DrawClone();
    clone->SetPad(0,0,1,1);
    temp->SaveAs(name);
    delete temp;
}


Rene Brun

Mike Miller wrote:
> 
> Hi All, I would like to do the following.  I have a macro that plots
> several different pads which I get by doing TCanvas::Divide.  When I save
> the canvas as a .eps it looks great.  But, I would also like to save each
> pad individually so that I can view them separately (and insert them into
> a presentation without cropping them out and resizing).  I do that via a
> little function which calls gPad->Save(), but that pad gets saved with
> exactly the same location and dimension on it's own .eps file as it has on
> the main canvas.  I want to be able to make it large and centered on a
> regular page.  Can somebody help me?  Here's an example macro to start the
> discussion.  Thanks, Mike
> 
> #include <iostream>
> 
> void savePad(const char* pad_name, const char* outdir, const char* tag)
> {
>     //I want to be able to resize the pad here, but don't know how
>     char name[100];
>     sprintf(name,"%s%s_%s", outdir, pad_name, tag);
>     const char* n = gPad->GetName();
>     cout <<"Write file:\t"<<name<<"\tfor pad:\t"<<n<<endl;
>     gPad->cd();
>     gPad->SaveAs(name);
> }
> 
> void RootPadExample()
> {
>     TCanvas* c1 = new TCanvas("c1","",100,100,300,300);
>     c1->Divide(1,2);
> 
>     c1->cd(1);
>     TF1* func = new TF1("func","sin(x)",0., TMath::Pi());
>     func->Draw();
>     savePad("sin","./","function.eps");
> 
>     c1->cd(2);
>     TF1* func2 = new TF1("func2","cos(x)",0., TMath::Pi());
>     func2->Draw();
>     savePad("cos","./","function.eps");
> 
>     c1->SaveAs("TheCanvas.eps");
> }
> 
> --
> Michael L. Miller (Yale Physics) michael.miller@yale.edu
> 
> Seattle:        206.543.2908    EPE group, 2nd floor physics.
> BNL:            631.344.8342    Building 118 Yale Software
> Yale:           203.432.6615    Room 301 WNSL



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET