2017-09-23 7 views
1

matplotlibに3Dプロットの問題があります。誰か助けてくれれば幸いですか?ユーザが手動で軸の範囲を設定し、ダニが限界に置かれたとき、結合軸が少し拡張され、: enter image description hereMatplotlib 3D:軸の境界が常に大きすぎます(limを正しく設定していません)

:matplotlibのギャラリー例プロット( https://matplotlib.org/examples/mplot3d/surface3d_demo.htmlなどから)から分かるように

軸に1.01目盛りラベルを表示したいが、これは立方体の頂点である必要があります(上に灰色のスペース/黒い軸線はありません)。これは可能ですか?

別に、もっと小さなリクエストとして、私は目立つようにグリッドの端に黒い線を描きたいと思います。しかし、これは境界を修正するよりも重要ではありません。参考のため

は、ここでは上記のプロットを行うコードは次のとおりです。

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
from matplotlib import cm 
from matplotlib.ticker import LinearLocator, FormatStrFormatter 
import numpy as np 


fig = plt.figure() 
ax = fig.gca(projection='3d') 

# Make data. 
X = np.arange(-5, 5, 0.25) 
Y = np.arange(-5, 5, 0.25) 
X, Y = np.meshgrid(X, Y) 
R = np.sqrt(X**2 + Y**2) 
Z = np.sin(R) 

# Plot the surface. 
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, linewidth=0, antialiased=False) 

# Customize the z axis. 
ax.set_zlim(-1.01, 1.01) 
ax.zaxis.set_major_locator(LinearLocator(10)) 
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) 

# Add a color bar which maps values to colors. 
fig.colorbar(surf, shrink=0.5, aspect=5) 

plt.show() 

答えて

-1

それはバグではありません。動作するはず

plt.show() 

plt.autoscale(tight=True) 

を追加:あなたはプロットを作るためにオートスケールを有効にすることができ

にのみ必要なスペースを占有します。

EDIT: 私の場合は、プロットは、私はこれが私のために何も変更しなかったんですが、提案のための

enter image description here

+0

おかげで、オートスケールを使用した後、1.00で停止します。私はオリジナルのポストに図を作るためのコードを追加しました - この提案はあなたのために機能しますか?ありがとう。 – IanRoberts

+0

あなたはそうです、この解決策は、スペースを排除しません。 – ImportanceOfBeingErnest

+0

@IanRoberts私は、私が得ているプロットを含める答えを更新しました。オートスケールを適用した後、1.01の代わりに1.00という上限を得ています。 – theLearner

関連する問題