2017-11-16 11 views
1

左ペインのエッジを表示することができません。使用Matplotlibの3Dフィギュアペインのエッジの可視性

ax3D.invert_yaxis() 
ax3D.invert_xaxis() 

enter image description here

よりよい解決策:

%pylab inline 
from mpl_toolkits.mplot3d import axes3d 
rcdefaults() 

x, y = meshgrid(linspace(-10, 10, 100), linspace(-10, 10, 100)) 
z = x**2+y**2 

fig = figure(figsize=[16, 9]) 
ax3D = fig.add_subplot(111, projection='3d') 
ax3D.plot_surface(x, y, z, rstride=8, cstride=8, alpha=0.3, cmap='hot') 
ax3D.contour(x, y, z, zdir='x', offset=ax3D.get_xlim()[0]) 
ax3D.contour(x, y, z, zdir='y', offset=ax3D.get_ylim()[1]) 
ax3D.contour(x, y, z, zdir='z', offset=ax3D.get_zlim()[0]) 
ax3D.xaxis.pane.set_edgecolor('#000000') 
ax3D.yaxis.pane.set_edgecolor('#000000') 
ax3D.zaxis.pane.set_edgecolor('#000000') 
ax3D.xaxis.pane.set_alpha(1) 
ax3D.yaxis.pane.set_alpha(1) 
ax3D.zaxis.pane.set_alpha(1) 
ax3D.xaxis.pane.fill = False 
ax3D.yaxis.pane.fill = False 
ax3D.zaxis.pane.fill = False 
fig.savefig('test') 

enter image description here

不満足な問題を回避するには、xおよびy軸を反転させることによって、この特定のウィンドウの縁に標識された斧を置くことですPoly3DCollectionラインパッチはほとんどそれを行います。検索された制限が正しくないように見えることを除いて。

from mpl_toolkits.mplot3d import art3d 

i = array([ax3D.get_xlim3d()[0], ax3D.get_ylim3d()[0], ax3D.get_zlim3d()[0]]) 
f = array([ax3D.get_xlim3d()[0], ax3D.get_ylim3d()[0], ax3D.get_zlim3d()[1]]) 
p = art3d.Poly3DCollection(array([[i, f]])) 
p.set_color('black') 
ax3D.add_collection3d(p) 

enter image description here

答えて

0

だからここに私のややハックの答えがある以上は述べ、この問題の回避策:

%pylab inline 
%matplotlib notebook 
%matplotlib notebook 
from mpl_toolkits.mplot3d import axes3d, art3d 
rcdefaults() 

x, y = meshgrid(linspace(-10, 10, 100), linspace(-10, 10, 100)) 
z = x**2+y**2 

fig = figure() 
ax3D = fig.add_subplot(111, projection='3d') 
ax3D.plot_surface(x, y, z, rstride=8, cstride=8, alpha=0.3, cmap='hot') 

def lims(mplotlims): 
    scale = 1.021 
    offset = (mplotlims[1] - mplotlims[0])*scale 
    return mplotlims[1] - offset, mplotlims[0] + offset 
xlims, ylims, zlims = lims(ax3D.get_xlim()), lims(ax3D.get_ylim()), lims(ax3D.get_zlim()) 
ax3D.contour(x, y, z, zdir='x', offset=xlims[0]) 
ax3D.contour(x, y, z, zdir='y', offset=ylims[1]) 
ax3D.contour(x, y, z, zdir='z', offset=zlims[0]) 
i = array([xlims[0], ylims[0], zlims[0]]) 
f = array([xlims[0], ylims[0], zlims[1]]) 
p = art3d.Poly3DCollection(array([[i, f]])) 
p.set_color('black') 
ax3D.add_collection3d(p) 

ax3D.xaxis.pane.set_edgecolor('#000000') 
ax3D.yaxis.pane.set_edgecolor('#000000') 
ax3D.zaxis.pane.set_edgecolor('#000000') 
ax3D.xaxis.pane.set_alpha(1) 
ax3D.yaxis.pane.set_alpha(1) 
ax3D.zaxis.pane.set_alpha(1) 
ax3D.xaxis.pane.fill = False 
ax3D.yaxis.pane.fill = False 
ax3D.zaxis.pane.fill = False 
fig.tight_layout() 
show() 

enter image description here

関連する問題