1
$\begingroup$

On paper or a blackboard, mathematicians (as opposed to engineers, physicists, etc.) typically draw 3D plots is with:

  1. axes origin is at (0, 0, 0) and axes are drawn emanating from there;
  2. the positive y-axis points due east, the positive z-axis points due north, and the positive x-axis pointing southwest (as if pointing forward, out of the paper); and
  3. the positive ends of these axes have arrowheads (just plain 2D arrowheads, not conical or similar quasi-3D objects.

In other words, the way that's shown in this image from https://en.wikipedia.org/wiki/Three-dimensional_space#/media/File:Coord_planes_color.svg:

Wikipedia drawing of 3D axes.

What is the best way to arrange this for Plot3D and the family of related functions (ParametricPlot3D, SphericalPlot3D, etc.)?

I'm aware of using options Boxed -> False, AxesOrigin -> {0,0,0}, Axes -> True, which accomplishes (1). But how best accomplish (2) and (3)?

More specifically:

  • For (3), is there some better way than the awkward method of using Show to combine the Plot3D with a Graphics3D consisting of three commands such as Arrow[{{0,0,0}, {1,0,0}}]?
  • For (2), is there some better way than effecting a geometric transformation on each geometric object created?
$\endgroup$
2
  • 1
    $\begingroup$ For (2), you can use ViewPoint (which can be used in Plot3D). $\endgroup$ – Taiki Aug 25 '18 at 15:24
  • $\begingroup$ You should be able to achieve (2) using ViewMatrix - during my quick testing however, I have unfortunately failed to do so... For (3), I think you'll have to draw the arrows yourself. You might want to use Charting`ScaledTicks[{Identity, Identity}] to get the tick marks and manually draw them as well. (That might yield a cleaner result) $\endgroup$ – Lukas Lang Aug 31 '18 at 8:27
1
$\begingroup$

I know this question is old, but I stumbled across it and thought I'd post this in case it helps someone in the future. I use something like this:

ViewPoint -> RotationTransform[Pi/2, {0, 0, 1}][{1, -2, 0.85}]
$\endgroup$
2
  • $\begingroup$ That does not seem to make the y-axis horizontal on the page, e.g., in Plot3D[x^2 - y^2, {x, -1, 1}, {y, -1, 1}, AxesOrigin -> {0, 0, 0}, Axes -> True, AxesLabel -> (Style[#, Bold, 16] &) /@ {"x", "y", "z"}, AxesStyle -> Thick, Boxed -> False, ViewPoint -> RotationTransform[Pi/2, {0, 0, 1}][{1, -5, 0.85}]] $\endgroup$ – murray May 1 at 14:25
  • $\begingroup$ Ah yes, so sorry I read the question too hastily. That said, I believe ViewMatrix can accomplish this. I’ll give it a go and post back if I can make it work, although I’m guessing you’ve already found a suitable solution. $\endgroup$ – bmclaurin May 2 at 18:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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