请考虑:
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行&垂直。我也不明白为什么边缘彼此相距遥远。
答案 0 :(得分: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
的结果:
答案 1 :(得分:1)
除了尤达的回应:
Lighting -> "Neutral"
将允许灰度对象显示为灰色而不是各种颜色。
PlotRangePadding -> None
将移除网格线上的空格(取决于PlotRange
的设置。)
答案 2 :(得分:1)
Yoda打败了我输入FaceGrids
设置(请参阅documentation)。但这是另一种选择。
您可以尝试设置FaceGrids
,而不是明确设置FrameTicks
设置,因为默认情况下FaceGrids
会遵循这些设置,然后将FrameTicks
设置为不可见的样式Opacity
。