In short, this is due to a behaviour in Mathematica's graphics rendering that seems intentional, but it is very strange in this particular context: Scaled
coordinates are scaled by GeometricTransform
and by Scale
. The arrowheads sizes are specified in scaled coordinates. Unfortunately there is no good way to specify them in absolute (offset) coordinates.Unfortunately there is no good way to specify them in absolute (offset) coordinates.
SciDraw adds a GeometricTransform
, which then affects the arrowheads, and (unintentionally) upscales them to ridiculous sizes. They become so large that they fill up the viewport.
Workaround
To work around the problem, I suggest manually reducing the arrowhead sizes to compensate. You can do this with replacement rules.
Instead of
FigGraphics[plot]
use
FigGraphics[
plot /. Arrowheads[{{s_, pos_}}] :> Arrowheads[{{0.006 s, pos}}]
]
The underlying problem
The below graphics display the same way regardless the value of s
. Also, all graphics elements scale proportionally when resizing the figure with the mouse. This is proof that the Arrowhead
specification is in scaled coordinates.
s = 5;
Graphics[
{Arrowheads[{{0.5, 1}}], Arrow[{{0, 0}, s {1, 0}}]},
PlotRange -> s {{0, 1}, {-.25, .25}},
AspectRatio -> Automatic,
Frame -> True
]
Now let us put in a GeometricTransform to scale everything to double size. To show the whole arrow, we manually double the plot range as well.
s = 5;
Graphics[
{Arrowheads[{{0.5, 1}}],
GeometricTransformation[
Arrow[{{0, 0}, s {1, 0}}], {2 {1, 0}, {0, 1}}]},
PlotRange -> 2 s {{0, 1}, {-.25, .25}},
AspectRatio -> Automatic,
Frame -> True
]
The scaling has affected the arrowhead. In this particular context this makes no sense to me. But the general behaviour is clearly intentional. The documentation of Scale
explicitly states it:
For objects specified with scaled coordinates
Scaled[{x,y}]
,Scale
effectively applies its transformation to the corresponding ordinary coordinates.
Thus this is perhaps not a "bug" (even though in situations like this one it is clearly undesirable).