2016-09-05 153 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