# How to insert a plot into another plot

I would like to know whether there is a way to insert a plot into another plot. I would like to do some plot from a function an then, inside this plot, in the right down corner add a smaller plot of the same function covering a smaller region. I tried with Epilog but it's not possible that way, it gives me a fail

• You've seen Inset[]? – J. M. is in limbo Nov 14 '12 at 9:54

...or do it dynamically so you can position the inset where you like it:

DynamicModule[{pt = Scaled[{0.5, 0.5}]},

Plot[Sin[x], {x, 0, 2 Pi},
PlotRange -> All,
Epilog -> {Dynamic[
Locator[Dynamic[pt],
Plot[Cos[x], {x, 0, 2 Pi}, Background -> White,
ImageSize -> 150]]]}]] • 1+ I liked this Dynamic tip! Cool! – Murta Nov 14 '12 at 13:53
• That is pretty nice, but is there a method by which you can read the coordinates after you are done with placing? – Daniele Binosi Aug 2 '18 at 14:16

You can use Inset for this

Building a new Graphics

gr1 = Plot[Sin[x]^2, {x, 0, 6 Pi}];
gr2 = Plot[Sin[x]^2, {x, 0, Pi}];

Graphics[{First[gr1], Inset[gr2, {15, -.6}, Automatic, Scaled[.4]]},
PlotRange -> {Automatic, {-1, 1}}, AbsoluteOptions[gr1]] Using Epilog

Plot[Sin[x]^2, {x, 0, 6 Pi}, PlotRange -> {Automatic, {-1, 1}},
Epilog -> {Inset[gr2, {15, -.6}, Automatic, Scaled[.4]]}]

• Ha Yep, question solved! That's what I was looking for! And with Background->White option it covers the old plot if necessary! Thanks a lot! – pablo Nov 14 '12 at 10:02
• For some reason, this method doesn't work on Mathematica 10.0.1! – Mahdi Mar 17 '15 at 22:57
• @Mahdi It works for me. – halirutan Mar 17 '15 at 23:05
• @halirutan: Probably related to this. I'm getting Axes::axes: "{{False,False},{False,False}} is not a valid axis specification. " and Ticks::ticks: "{Automatic,Automatic} is not a valid tick specification." using under Linux 64-bit. – Mahdi Mar 17 '15 at 23:12

You mean something like this?

p1 = Plot[Sin[x], {x, 0, 2 π}];
p2 = Plot[Sin[x], {x, 0, π}];

Show[Graphics[{Rectangle[{0, 0}, {1, 1}, p1],
Rectangle[{0.7, 0.4}, {1, 1}, p2]}]] • This was how it was done before Inset[] came along... – J. M. is in limbo Nov 14 '12 at 9:56
• @J.M. Ha, it means that it is a long time that I didn't have the need to do something like this. – VLC Nov 14 '12 at 9:57
• (+1) very nice. I don't think i have seen this syntax before; any references? – kglr Nov 14 '12 at 10:02
• @kguler, it was documented in old versions; apparently, when Inset[] became available in version 6, that piece of syntax was quietly redacted. – J. M. is in limbo Nov 14 '12 at 10:28
• @J.M. thank you. – kglr Nov 14 '12 at 10:32

In addition to Inset etc., you can do this manually with the 2D Graphics editing tools.

First producing plots as halirutan did:

p1 = Plot[Sin[x], {x, 0, 2 π}]
p2 = Plot[Sin[x], {x, 0, π}] Click the first one to select it (orange border): Then Copy or Cut the object.

Next, double-click the second graphic to enter editing mode (gray border): And Paste the first graphic: You can then position and resize the inset graphic using the orange frame.
When you are done just click outside of the main gray frame.

• Even easier, thanks a lot! – pablo Nov 14 '12 at 11:25
• This is a good solution, but in the end I would like to have a code from where I can re-run if I want those specifications again. Any simple way of retrieving that information? – Jorge Leitao Dec 27 '12 at 13:37
• @J.C.Leitão Sorry, I never saw your comment. I can't think of anything practical but that could be a good question; why don't you post it? (If you haven't done so already in the long time since you asked this.) – Mr.Wizard Aug 14 '13 at 22:54