Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Normally, you can enable Graphics3D to show tick marks by doing this:

Graphics3D[Sphere[], Axes -> True]

ticks

But in Mathematica version 10, when I add an Inset which contains a Grid or Column, the output looks wrong:

Graphics3D[Sphere[], Axes -> True,
 Epilog -> Inset[Column[{"a"}], {.05, .05}]]

no ticks

The ticks only appear when I manually rotate the graphics or start editing the input line. But note that I produced the enclosed images here by doing Export["file.png",%] after each plot, so that this faulty display is indeed not just a notebook display problem - it leads to incorrectly exported graphics, too.

This doesn't appear to happen when the inset contains a Row instead of Column. I also see this strange behavior when doing something like this:

Plot3D[1, {x, -1, 1}, {y, -1, 1},
 Epilog -> Inset[Column[{"a"}], {.05, .05}]]

partial ticks

Here, you can see that the tick marks are displayed only partially!

My operating system is Mac OS X 10.8.5, and I am wondering if this is reproducible on other systems. If so, it would be nice to know how to work around this problem. The issue also goes away when the Inset only contains numbers and not strings.

Edit

I've reported this as a bug (CASE:1384605).

share|improve this question
    
I can see this on OS X 10.9.4 with v10. In v9 everything works fine. I think this is a bug. –  Szabolcs Aug 9 at 18:15
    
Confirmed in v10.0.0 under Windows. –  Mr.Wizard Aug 9 at 18:22
    
V10 Windows - It also happens with Grid, but it doesn't happen with Inset["a", {.05, .05}] –  eldo Aug 9 at 19:06
2  
When you click on the resulted plot the tick appears. anyone gets same behavior? –  Algohi Aug 9 at 21:01
    
@Algohi Confirmed under Win7 x64. –  Alexey Popkov Aug 9 at 23:36

3 Answers 3

The bug is reproduced in v. 10.0.0 under Win7 x64.

A workaround:

Graphics[{Inset[Graphics3D[Sphere[], Axes -> True], Center, Center, 
   Scaled[1]], Inset[Column[{"a"}], {.05, .05}]}]

plot

share|improve this answer
1  
Thanks - this gave me another idea: wrapping the plot in Legended instead of doing an inset works, too. I put this into my own attempt at an answer. –  Jens Aug 10 at 17:44
up vote 3 down vote accepted

Since the bug doesn't seem to occur when the Inset contains a Row instead of a Column or Grid, one could define the following function:

Attributes[fixInsets] = {HoldFirst}; 
fixInsets[plot_] := 
 ReleaseHold[
  Hold[plot] /. 
   HoldPattern[Rule[Epilog, Inset[x_, y___]]] :> 
    Rule[Epilog, Inset[Row[{x}], y]]
  ]

Then use it on the faulty plots like this:

Graphics3D[Sphere[], Axes -> True, 
  Epilog -> Inset[Column[{"a"}], {.05, .05}]] // fixInsets

This produces the correct output. All I did was to replace the content of the Inset (when it occurs in the Epilog) by Row[{...}] wrapping that content. fixInsets doesn't modify the plot if there is no need to, and it can be appended to any 3D graphics without having to change the actual plotting commands.

Another possible work-around is to wrap the plot in Legended. For example,

Legended[
 Plot3D[1, {x, -1, 1}, {y, -1, 1}, Epilog -> Inset[Column[{"a"}]]],
 ""]

This empty legend is enough to make the tick marks appear again.

share|improve this answer
2  
+1 It even functions with Inset[Style[Column[{"a", "b"}], 24, Red], so your solution seems to be a "general temporary fix" –  eldo Aug 10 at 17:11
    
@eldo Yes, the additional Row shouldn't be causing any trouble in any of the the cases I could think of. –  Jens Aug 10 at 17:32

While searching for a possible workaround I observed another strange behaviour:

Only functions in V9 (ticks disappear in V10):

Graphics3D[Sphere[],
 Axes -> True,
 Epilog -> Inset[Style["First row\nSecond Row", 12, Bold], {.05, .05}],
 ImagePadding -> 40]

enter image description here

But this functions in both versions:

Graphics3D[Sphere[],
 Axes -> True,
 Epilog -> Inset["First row\nSecond Row", {.05, .05}],
 ImagePadding -> 40]

enter image description here

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.