如何确定matplotlib轴对象的投影(2D或3D)?

时间:2016-09-05 15:10:14

标签: python matplotlib 3d 2d projection

在Python的matplotlib库中,很容易在创建时指定轴对象的投影:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
ax = plt.axes(projection='3d')

但是如何确定现有轴对象的投影?没有ax.get_projectionax.properties不包含"投影"关键,快速谷歌搜索没有任何有用的东西。

2 个答案:

答案 0 :(得分:3)

我认为没有自动化的方法,但显然只有3D投影才有一些属性(例如zlim)。

所以你可以写一个小帮手函数来测试它的3D是否:

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

def axesDimensions(ax):
    if hasattr(ax, 'get_zlim'): 
        return 3
    else:
        return 2


fig = plt.figure()

ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212, projection='3d')

print "ax1: ", axesDimensions(ax1)
print "ax2: ", axesDimensions(ax2)

打印哪些:

ax1:  2
ax2:  3

答案 1 :(得分:2)

事实证明,这里给出的答案实际上是对这个问题更好的答案:python check if figure is 2d or 3d 我在副本中提供的答案是对这个问题的更好答案。

在任何情况下,您都可以使用轴的name。这是决定投影的字符串。

plt.gca().name   or   ax.name

如果ax是轴。

3D轴的名称将为"3d"。 2D轴的名称将为"rectilinear""polar"或其他名称,具体取决于绘图的类型。自定义投影将具有自定义名称。

因此,只需使用ax.get_projection()而不是ax.name