# Ticks disappear in Graphics3D with Epilog

Bug introduced in 10.0.0 and fixed in 10.0.2

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

Graphics3D[Sphere[], Axes -> True]


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}]]


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}]]


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).

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

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}]}]


• 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, 2014 at 17:44

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.

• +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, 2014 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, 2014 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}],

Graphics3D[Sphere[],