void annotation3d() { auto c = new TCanvas("c", "c", 600, 600); c->SetTheta(30); c->SetPhi(50); gStyle->SetOptStat(0); gStyle->SetHistTopMargin(0); gStyle->SetOptTitle(kFALSE); // Define and draw a surface auto f = new TF2("f", "[0]*cos(x)*cos(y)", -1, 1, -1, 1); f->SetParameter(0, 1); double s = 1. / f->Integral(-1, 1, -1, 1); f->SetParameter(0, s); f->SetNpx(50); f->SetNpy(50); f->GetXaxis()->SetTitle("x"); f->GetXaxis()->SetTitleOffset(1.4); f->GetXaxis()->SetTitleSize(0.04); f->GetXaxis()->CenterTitle(); f->GetXaxis()->SetNdivisions(505); f->GetXaxis()->SetTitleOffset(1.3); f->GetXaxis()->SetLabelSize(0.03); f->GetXaxis()->ChangeLabelByValue(-0.5, -1, -1, -1, kRed, -1, "X_{0}"); f->GetYaxis()->SetTitle("y"); f->GetYaxis()->CenterTitle(); f->GetYaxis()->SetTitleOffset(1.4); f->GetYaxis()->SetTitleSize(0.04); f->GetYaxis()->SetTitleOffset(1.3); f->GetYaxis()->SetNdivisions(505); f->GetYaxis()->SetLabelSize(0.03); f->GetZaxis()->SetTitle("dP/dx"); f->GetZaxis()->CenterTitle(); f->GetZaxis()->SetTitleOffset(1.3); f->GetZaxis()->SetNdivisions(505); f->GetZaxis()->SetTitleSize(0.04); f->GetZaxis()->SetLabelSize(0.03); f->SetLineWidth(1); f->SetLineColorAlpha(kAzure - 2, 0.3); c->Add(f, "surf1 fb"); // Lines for 3D annotation double x[11] = {-0.500, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.500}; double y[11] = {-0.985, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 0.985}; double z[11]; for (int i = 0; i < 11; ++i) z[i] = s * cos(x[i]) * cos(y[i]); auto g2 = new TPolyLine3D(11, x, y, z); double xx[2] = {-0.5, -0.5}; double yy[2] = {-0.985, -0.985}; double zz[2] = {0.11, s * cos(-0.5) * cos(-0.985)}; auto l2 = new TPolyLine3D(2, xx, yy, zz); g2->SetLineColor(kRed); g2->SetLineWidth(3); c->Add(g2); l2->SetLineColor(kRed); l2->SetLineStyle(kDashed); l2->SetLineWidth(1); c->Add(l2); // Draw text Annotations auto txt = new TAnnotation(-0.45, -0.2, 0.33, "f(y,x_{0})"); txt->SetTextFont(42); txt->SetTextColor(kRed); c->Add(txt); auto txt1 = new TAnnotation(0.5, 0.5, 0.3, "f(x,y)"); txt1->SetTextColor(kBlue); txt1->SetTextFont(42); c->Add(txt1); }