1

请考虑 :

colors = {Red, Green, Blue};
style = {Thickness[.01], Thickness[.01], Thickness[.01]};
cAxes = {{{0, 0, 0}, {0, 0, 1}}, {{0, 0, 0}, {0, 1, 0}}, {{0, 0, 
 0}, {1, 0, 0}}};

Graphics3D[{{#1, #2, Line@#3} & @@@ Transpose@{colors, style, cAxes}, 
Blue, Specularity[White, 3], Sphere[{.5, .5, .5}, .1]}, 
Boxed -> False, FaceGrids -> All, 
FaceGridsStyle -> Directive[Black, Dashed]]

使用 Yoda 关于如何设置线条样式的解决方案

如何使用 GrayLevel 为球体着色(稍后我将对其进行操作)。

我怎么能有更密集的 FaceGrids?水平和垂直 10 行。我也不明白为什么 Edges 彼此相距甚远。

在此处输入图像描述

4

3 回答 3

2

最好将图形对象及其样式分组到一个列表中,以防您需要快速添加另一个具有不同样式的对象。我的意思是把它写成{Blue, Specularity[White, 3], Sphere[{.5, .5, .5}, .1]}. 现在您可以轻松地在GrayLevel之前添加一个术语Sphere并且它会起作用。

对于FaceGrids,我相信您必须手动为每个面以所需的间距定义线条。这是一个示例,用于展示如何为一张脸执行此操作。

Graphics3D[{{#1, #2, Line@#3} & @@@ 
   Transpose@{colors, style, cAxes}, {Blue, GrayLevel[0.3], Lighting -> "Neutral",
   Specularity[White, 3], Sphere[{.5, .5, .5}, .1]}}, Boxed -> False, 
 FaceGrids -> {{{0, 0, 1}, 
    Transpose@({#, #} & /@ Range[0, 1, 0.1])}}, 
 FaceGridsStyle -> Directive[Black, Dashed]]

在此处输入图像描述

面定义为±1对应平面,其他两个为零。所以{0,0,1}在我的例子中对应于z=1飞机。

提供给的列表FaceGrids可以很容易地为每个面计算,而不是手动输入它们,但我会把它留给你:)

编辑:

由于您想要一个统一的网格,因此定义您想要绘制网格线的位置为

gridList = Transpose@({#, #} & /@ Range[0, 1, 0.1]);

然后,将以下内容用于FaceGrids

FaceGrids -> Join @@ Table[{RotateLeft[j {0, 0, 1}, i], gridList}, 
    {i, {0, 1, 2}}, {j, {-1, 1}}]

以下是结果的样子PlotRangePadding -> None

在此处输入图像描述

于 2011-11-14T00:18:57.257 回答
1

除了尤达的回应:

  • Lighting -> "Neutral"将允许灰度对象显示为灰色而不是各种颜色。

  • PlotRangePadding -> None将删除网格线上的空格(取决于 . 的设置PlotRange

于 2011-11-14T00:21:59.517 回答
1

Yoda 打败了我,让我输入了FaceGrids设置(请参阅文档)。但这里有一个替代方案。

除了FaceGrids显式设置设置,您还可以尝试设置FrameTicks,因为默认情况下FaceGrids遵循这些设置,然后FrameTicks使用 设置不可见的样式Opacity

于 2011-11-14T00:22:26.710 回答