2016-09-05 11 views
2

創造にAxesオブジェクトの投影を指定することは簡単です:Matplotlib Axesオブジェクトの投影(2Dまたは3D)の決定方法は? Pythonのmatplotlibのライブラリで

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

しかし、どのように私は、既存の軸の投影がオブジェクトを決定していますか? ax.get_projectionはありません。ax.propertiesには「投影」キーが含まれていないため、すばらしいGoogle検索では何も役立ちません。

答えて

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

axが軸の場合。

3D軸の名前は"3d"になります。 2D軸の名前は、プロットの種類に応じて"rectilinear","polar"などの名前になります。カスタム投影にはカスタム名が付けられます。

ax.get_projection()の代わりにax.nameを使用してください。

関連する問題