1

I am trying to superimpose two plots: a ContourPlot and a LogLogPlot. Even though they both have the same range individually, when I "show" both of them, the range of one is wrong (depending on which plot comes first in "show").

Here are the plots:

pl1 = LogLogPlot[(5*10^15)/x, {x, 10^(-7), 10^(-3)}]
pl2 = ContourPlot[a^(-2/3)*b^-2, {a, 10^(-3), 10^(-7)}, {b, 10^8, 10^23}, 
  ScalingFunctions -> {"Log10", "Log10", "Log10"}]

Then when I run

Show[{pl1, pl2}, PlotRange -> All]

the two plots do not overlap even though they should. Running them in reverse order:

Show[{pl2, pl1}, PlotRange -> All]

gives a different (and also incorrect) result

1 Answers1

4

The Show command uses the options from the first graphic that you feed to it, see here

This explains why when you are re-ordering the graphics you get different results. It is to be expected.

In order to fix that: since, show knows what it is doing just don't use the PlotRange command.

The following piece of code

pl1 = Plot[(5*10^15)/x, {x, 10^(-7), 10^(-3)}, ScalingFunctions -> {"Log10", "Log10"}, 
    PlotStyle -> {Thick, White}]; 
pl2 = ContourPlot[1/(a^(2/3)*b^2), {a, 10^(-3), 10^(-7)}, {b, 10^8, 10^23}, 
    ScalingFunctions -> {"Log10", "Log10", "Log10"}]; 
Show[pl2, pl1]

gives

plot

Is this what you wanted?