2016-09-05 116 views
2

在Python的matplotlib库很容易指定在创建一个轴对象的投影:如何确定matplotlib轴对象的投影(2D或3D)?

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

但是我怎么确定现有轴的投影对象?没有ax.get_projection,ax.properties不包含“投影”键,而快速谷歌搜索没有发现任何有用的东西。

回答

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 
+0

谢谢。我会接受这个答案,因为它的确有窍门,但我会留意一下这样做的内置方式。如果我找到任何东西,将更新我的问题。 – byntje

1

原来,这里给出的答案实际上是一个更好回答这个问题:python check if figure is 2d or 3d 而我提供的答案是这个问题更好的答案。

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

plt.gca().name or ax.name

if ax是轴。

3D轴的名称将为"3d"。根据绘图类型,2D轴的名称将为"rectilinear","polar"或其他名称。自定义预测将有他们的自定义名称。

因此,代替ax.get_projection()只需使用ax.name