Instead of 2 graphs, put all the points in one TGraph (so that each x has two y points, see my comment below) and then plot the graph with the fill option (“F”) together with “AL”; eg:
TGraph *grshade = new TGraph(2*N);
for (Int_t j=0; j<N; ++j) {
grshade->SetPoint(j,x[j],ytop[j]);
grshade->SetPoint(N+j,x[N-j-1],ybottom[N-j-1]);
}
grshade->SetFillColor(2);
grshade->SetFillStyle(3001);
grshade->Draw("fAL");
where N is the number of points of each original graph (same for both), x[j] are the x-axis values and ytop and ybottom are the y-axis values for each of the original graphs. In my example, both graphs (“top” and “bottom”) have the same x-axis values, but I don’t know if this may work for different values; also, note that the bottom graph is saved into the new graph from last to first point, so that the line that joins the points in the final graph (grshade) does not cross the plot, since it now joins the last two points -top and bottom- on the right end of the graph.
EDIT: make sure both graphs (ytop, ybottom) are ordered in increasing x-axis value before filling the new graph.
-Daniel