{ auto c1 = new TCanvas("c1","c1",600,400); Int_t nx(6), ny(40); double xmin(0.0), xmax(+6.0), ymin(0.0), ymax(+4.0); auto hviolin = new TH2F("hviolin", "Option VIOLIN example", nx, xmin, xmax, ny, ymin, ymax); TF1 f1("f1", "gaus", +0,0 +4.0); double x,y; for (Int_t iBin=1; iBinGetNbinsX(); ++iBin) { double xc = hviolin->GetXaxis()->GetBinCenter(iBin); f1.SetParameters(1, 2.0+TMath::Sin(1.0+xc), 0.2+0.1*(xc-xmin)/xmax); for(Int_t i=0; i<10000; ++i){ x = xc; y = f1.GetRandom(); hviolin->Fill(x, y); } } hviolin->SetFillColor(kGray); hviolin->SetMarkerStyle(20); hviolin->SetMarkerSize(0.5); hviolin->Draw("VIOLIN"); c1->Update(); }