gpt4 book ai didi

python - 在 matplotlib 3d 图中移动脊椎?

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:56 26 4
gpt4 key购买 nike

我正在尝试移动 3D matplotlib 轴对象中的脊椎。

这似乎是一个非常简单的问题,但我还没有找到任何直接解决这个问题的问题/答案。我在这个问题的底部列出了我对这个主题的研究。

我可以在 matplotlib 二维绘图中设置脊柱的位置。以下代码:

import matplotlib.pyplot as plt, numpy as np

fig, axes = plt.subplots(1, 2)
r, theta = 1, np.linspace(0, 2*np.pi, 100)
x, y = r*np.cos(theta), r*np.sin(theta)
for ax in axes: # plot the same data on both axes
ax.plot(x, y)
ax.set_aspect("equal")
for spine in ax.spines.values(): # adjust spines on last active axis
spine.set_position(("data", 0))

产生: super sick 2d plots

但是,当我用 3D 轴尝试同样的事情时...

z = np.zeros(x.shape)  # exciting stuff
fig = plt.figure()
for i in range(2): # create two 3D subplots
ax = plt.subplot(1,2,i+1, projection="3d", aspect="equal")
plt.plot(x, y, z)
for spine in ax.spines.values(): # adjust spines on last active axis
spine.set_position(("data", 0))

上面的代码给我:

really lame 3d plots

即没有效果,即使代码仍在运行。此外,对于 3D 轴,ax.spines 看起来像:

OrderedDict([('left', <matplotlib.spines.Spine at 0x120857b8>),
('right', <matplotlib.spines.Spine at 0xfd648d0>),
('bottom', <matplotlib.spines.Spine at 0xe89e4e0>),
('top', <matplotlib.spines.Spine at 0xe89eef0>)])

我不确定“左”、“右”、“底”、“顶”在 3D 轴的上下文中指的是什么。我试过改变其他属性,比如书脊的颜色;那里也没有运气。我怎样才能掌握轴上的实际 x、y、z 脊柱?

研究:

  • 在撰写本文时,在 stackoverflow 中搜索“matplotlib spines 3d”会给出 5 个结果(包括这个问题)。
  • mplot3d文档根本没有提到书脊。
  • This question显示了如何使用 ax.w_xaxis.set_pane_color() 设置 Pane 颜色,但没有类似的 ax.w_zaxis.set_spine... 方法。
  • This question显示如何使用 ax.w_zaxis.line.set_color() 设置书脊颜色。我想过做一个可怕的解决方法来手动设置 ax.w_zaxis.line.set_data,但它只有 x 和 y 数据;不!甚至 x 和 y 轴也没有 z 数据。

最佳答案

目前似乎没有明显的方法可以做到这一点。轴投影为 3D 时设置脊柱未实现。但是,有一个小技巧 here .

ax.spines 设置用于 2D 渲染。当您在图形的初始化中设置 projection=3d 时,某些二维属性(如 ax.spines 等)将被忽略。这就是为什么在设置 2D 脊柱时没有收到任何响应的原因。

3D 图形轴线(每个轴的粗黑线)位置由参数 ax.xaxis._axinfo['juggled'] 确定(y 轴和 z 轴也类似)。这指定将 3D 绘图边界框的六个外边界中的哪些绘制为粗黑线。

您可以通过覆盖 juggled 值来为每个 x、y、z 轴移动轴线的位置,该值指定哪些轴线是主要轴线,如以下示例所示x轴, enter image description here默认设置,ax.xaxis._axinfo['juggled'] = (1,0,2) enter image description here新设置,ax.xaxis._axinfo['juggled'] = (2,0,1)所有六个外边界的参数是, enter image description here

关于python - 在 matplotlib 3d 图中移动脊椎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com