【问题标题】:Interchange location of y and z axis in 3D matplotlib plot3D matplotlib 图中 y 轴和 z 轴的互换位置
【发布时间】:2016-04-21 03:38:27
【问题描述】:

默认情况下,使用matplotlib 在 3D 中绘制一组点(或其他),垂直定位 z 轴,如下所示(代码如下):

我需要交换zy 轴,以便垂直显示y 轴。

我环顾四周,但没有办法告诉matplotlib 这样做。

添加:我不想求助于我交换数据和标签的黑客行为。这是一个简单的 3 点 3D 图,但我必须绘制更复杂的曲面。我正在寻找一个通用 解决方案,而不仅仅是适用于散点图的解决方案。告诉matplotlib 垂直放置y 轴而不是z 轴的简单方法是干净 方法。


MWE

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


fig = plt.figure()
ax = Axes3D(fig)

ax.scatter([0.2, 0.5, 0.8], [2.3, 0.47, 1.], [2.1, 5.3, 0.7])

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()

【问题讨论】:

  • 您是否查看过 zdirscatter 的参数?
  • 我不熟悉@tom 的论点。请记住,我正在寻找一个通用解决方案,而不仅仅是适用于散点图的解决方案。
  • 现在太忙了,如果我以后有时间的话:)
  • 很遗憾,没有@t.rathjen。最接近的解决方案是下面 innoSPG 提供的答案。
  • 我也在寻找与黑客不同的解决方案。有没有更新?

标签: python matplotlib plot 3d


【解决方案1】:

我认为目前这是不可能的。 ax.view_init() 也需要接受第三个角度。 我在 github 上打开了一个问题,https://github.com/matplotlib/matplotlib/issues/14453#issue-452397120,希望有人致力于实现此功能。

更新

第三视角最近实现,已经合并到matplotlib主分支:https://github.com/matplotlib/matplotlib/pull/21426

它应该出现在 Matplotlib 3.6.0 中。

【讨论】:

  • 感谢您打开错误报告 Bastian!
  • 这是一个有趣的功能,希望对大家有用!
【解决方案2】:

一种可能性是交换数据中 y 和 z 的位置并相应地标记。而不是

ax.scatter([0.2, 0.5, 0.8], [2.3, 0.47, 1.], [2.1, 5.3, 0.7])

使用

ax.scatter([0.2, 0.5, 0.8], [2.1, 5.3, 0.7], [2.3, 0.47, 1.])

标签为ax.set_ylabel('z')ax.set_zlabel('y')

【讨论】:

  • 感谢 inno,但这种类型的 hack 正是我不想想要做的。由于不清楚,因此我将其添加到问题中。
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2021-01-14
相关资源
最近更新 更多