3
$\begingroup$

In a new notebook, I can illustrate how the action of Magnify is cut off by the window width:

SetOptions[EvaluationNotebook[], WindowSize -> {600, 1000}] p = Plot[x^2, {x, -1, 1}] Magnify[p, 4] 

enter image description here

At this point, the plot shows only the axis labels enlarged, whereas the documentation states that Magnify scales all aspects of the graphic. The expected behavior is recovered if we enlarge the window:

SetOptions[EvaluationNotebook[], WindowSize -> {1700, 1000}] 

Notice how the previous plot is now scaled to twice the original size in all aspects.

Is there a way to use Magnify in windows of arbitrary size and always get a consistent result with all aspects of a graphic scaled by the same factor, as the documentation states?

$\endgroup$
3
  • $\begingroup$ Have you tried adjusting Formatting options/FontProperties/ScreenResolution (in the options inspector)? Default is 72, but that's too small on many newer screens. Craking it up to around 90 effectively zooms everything. $\endgroup$ Commented Feb 10, 2012 at 6:24
  • $\begingroup$ The reason I'm asking is that I want to use Magnify programmatically, as e.g. in this question [1]. It's not that I want to zoom all of the displayed content (I would do that using NotebookOptions>Display Options> Magnification). [1] mathematica.stackexchange.com/questions/1542/… $\endgroup$ Commented Feb 10, 2012 at 6:37
  • $\begingroup$ Please tell me if my suggestion to use ImageSize goes against what you are trying to do. $\endgroup$ Commented Feb 10, 2012 at 7:01

2 Answers 2

2
$\begingroup$

Try setting ImageSize:

p = Plot[x^2, {x, -1, 1}, ImageSize -> 300]; Magnify[p, 4] 

As Szabolcs kindly notes one may use ImageSize -> Medium to preserve the default sizing while still embedding an explicit ImageSize that prevents the resize-to-window behavior you wish to avoid.

You could also rasterize at 4X normal ppi (default 72) and display 1:1 :

ppi = CurrentValue["FontPropertiesScreenResolution"]; Image[p, ImageResolution -> 4 * ppi, Magnification -> 1] 
$\endgroup$
1
  • 1
    $\begingroup$ Actually I like the ImageSize suggestion because it gives you a baseline for all the other sizes in the plot, too. I would prefer something that can work with the fewest additional assumptions about the plot itself, but this looks pretty likely to be the optimal way. I'll get back to this tomorrow... $\endgroup$ Commented Feb 10, 2012 at 7:34
1
$\begingroup$

My own idea for a solution was

SetOptions[EvaluationNotebook[], WindowSize -> All] 

This isn't exactly what I want, because it forces the notebook to adjust its window width to the magnified image. It's still a possible work-around, and it will depend on the application whether you prefer this method to setting an explicit image size for every graphic that is to be magnified.

$\endgroup$
2
  • $\begingroup$ +1 It works, however for some reason Mathematica 8.0.4 does not scale ticks in your example. $\endgroup$ Commented Mar 2, 2012 at 12:13
  • $\begingroup$ Yes, that's a problem. I know how to work around it in Graphics2D: Instead of saying Magnify[p,4], do this: Magnify[FullGraphics[p],4] but there's no such trick for Graphics3D. $\endgroup$ Commented Mar 2, 2012 at 16:18

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.