Mathematica:帮我理解Mathematica的三维坐标系统

5

我放弃了尝试理解Mathematica 3D轴配置。

当我制作3D图并标记三个轴以识别每个轴时,在这些轴上绘制点时,使用取{x,y,z}坐标的Point命令在不同于我预期的轴上显示。

以下是一个例子。

g=Graphics3D[
  {
   {PointSize[0],Point[{0,0,0}]}
  },
  AxesOrigin->{0,0,0}, PlotRange->{{-3,3},{-3,3},{-3,3}},
  Axes->True, AxesLabel->{"X","Y","Z"},
  LabelStyle->Directive[Bold,Red,16],
  PreserveImageOptions->False, Ticks->None,Boxed->False]

上述结果显示为: enter image description here 因此,现在我在x轴、y轴和z轴的末端添加了一个点。我使用不同的颜色来帮助在图表上识别它们。
 g=Graphics3D[
 {
  {Red,PointSize[.03],Point[{3,0,0}]},
  {Black,PointSize[.03],Point[{0,3,0}]},
  {Blue,PointSize[.03],Point[{0,0,3}]}
 },
  AxesOrigin->{0,0,0},PlotRange->{{-3,3},{-3,3},{-3,3}},
  Axes->True,AxesLabel->{"X","Y","Z"},
  LabelStyle->Directive[Bold,Red,16],PreserveImageOptions->False,
  Ticks->None,Boxed->False]

结果如下所示: enter image description here 您可以看到,红色点本应显示在x轴的末端,但却出现在了Z轴末端。黑色点本应显示在y轴的末端,但却出现在了X轴上,蓝色点本应显示在Z轴末端,但却出现在了Y轴末端。
也许标签有误?也许我看图片的方式不正确?
我真的很困惑,因为我显然没有理解某些东西。我查看了文档,但找不到帮助我发现自己错误的方法。我刚开始学习Mathematica 3D图形。
编辑:添加了一个带有刻度线的图片,回答Simon,我不知道如何在评论框中添加它。
 g=Graphics3D[
 {
   Cuboid[{-.1,-.1,-.1},{.1,.1,.1}],
   {Red,PointSize[.03],Point[{2,0,0}]},
   {Black,PointSize[.03],Point[{0,2,0}]},
   {Blue,PointSize[.03],Point[{0,0,2}]}
  },
   AxesOrigin->{0,0,0},
   PlotRange->{{-2,2},{-2,2},{-2,2}},
   Axes->True,
   AxesLabel->{"X","Y","Z"},
   LabelStyle->Directive[Bold,Red,16],
   PreserveImageOptions->False,
   Ticks->True, TicksStyle->Directive[Black,8],
   Boxed->False
   ]

这是结果: 在此输入图片描述

编辑:好的,我决定放弃使用AxesLabels,并自己添加它们。现在更加清晰了。
m=3;
labels={Text[Style["X",16],{1.2 m,0,0}],Text[Style["Y",16],{0,1.2 m,0}],
       Text[Style["Z",16],{0,0,1.2 m}]};

 g=Graphics3D[
 {
   {Red,PointSize[.03],Point[{m,0,0}]},
   {Black,PointSize[.03],Point[{0,m,0}]},
   {Blue,PointSize[.03],Point[{0,0,m}]},
   labels
 },
  AxesOrigin->{0,0,0},
  PlotRange->{{-m,m},{-m,m},{-m,m}},
  Axes->True,
  AxesLabel->None,
  LabelStyle->Directive[Bold,Red,16],
  PreserveImageOptions->False,
  Ticks->True, TicksStyle->Directive[Black,8],
  Boxed->False
  ]

enter image description here

2个回答

5

我同意你的观点,对于3D图形来说,AxesLabel几乎没有什么用处。看看一个小的交互视角变化对你的图像的影响:

[enter image description here]

在我看来,WRI应该真正改进这个选项的操作,并最好提供一些更多的放置控制(轴的末尾/中间等)。


3

我认为标签放置的位置不太直观。用不同长度的彩色线条替换您的点对我来说更清晰。我还删除了显式的绘图范围,这有助于Mathematica将标签放置在更清晰的位置。

 g=Graphics3D[
{
 {Red,Thick, Line[{{0, 0, 0}, {1, 0, 0}}]},
 {Black,Thick, Line[{{0, 0, 0}, {0, 2, 0}}]},
 {Blue,Thick, Line[{{0, 0, 0}, {0, 0, 3}}]}
},
 AxesOrigin->{0,0,0},
 Axes->True,AxesLabel->{"X","Y","Z"},
 LabelStyle->Directive[Bold,Red,16],PreserveImageOptions->False,
 Ticks->None,Boxed->False]

enter image description here


谢谢,这不仅仅是不直观的位置问题 :),它完全偏离了轨道。这就是为什么我在另一个问题中询问如何将3D标签放在轴的末端。如果没有办法,我将使用Text命令自己放置标签,不再使用AxesLabel,因为现在用于排列它们的算法似乎不太有效,并且会造成更多困惑而不是帮助。 - Nasser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接