相关疑难解决方法(0)

matplotlib:删除混合 2D/3D 子图中的 3D 绘图的空白

混合 2D 和 3D 子图时,我无法去除过多的空白。对于纯 3D 子图,我可以调整正在绘制的区域fig.subplots_adjust()以去除空白,请参见此处

但是,如果此 3D 图像位于 2D 子图中,则相同的技巧将不起作用。我创建了如下所示的混合子图:

import matplotlib.pyplot as plt    
from matplotlib import cm
from mpl_toolkits.mplot3d import axes3d

fig,axes = plt.subplots(2,2)
ax = axes.flat

for a in range(3):
    ax[a].plot(range(10),range(10))

ax[3].remove()
ax[3] = fig.add_subplot(224,projection='3d')

X, Y, Z = axes3d.get_test_data(0.03)
ax[3].plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.8,cmap=cm.coolwarm)

ax[3].set_xticklabels('')
ax[3].set_yticklabels('')
ax[3].set_zticklabels('')

fig.subplots_adjust(hspace=0,wspace=0)
Run Code Online (Sandbox Code Playgroud)

现在的伎俩,例如。fig.subplots_adjust(left=-0.01)将作用于 2D 子图的左边缘,并且不会修改 3D 子图。有没有办法完全去除 3D 子图周围的空白?我也试过更小ax.dist,如果 3D 绘图在 z 方向上更长,那就不好了。

在此处输入图片说明

python matplotlib mplot3d

6
推荐指数
1
解决办法
2017
查看次数

删除 Axes3d 中的空格(matplotlib)

我正在用一堆多边形绘制一个表面。绘图非常简单,如下所示。

def plotSurface(cell, numOfLayer, name=None, alpha = 0.5):
    #import the libraries
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib as mpl
    from mpl_toolkits.mplot3d.art3d import Poly3DCollection
    import numpy as np
    import matplotlib.pyplot as plt
    #limits of the plot
    radius = (numOfLayer>1)*(np.sqrt(3.)*(numOfLayer-1)-Length)+Length#the radius of circle to be projected on
    #plotting part
    fig = plt.figure(frameon=False,figsize=(12,10))
    ax = Axes3D(fig)
    ax.set_xlim((-2*radius,2*radius))
    ax.set_ylim((-2*radius,2*radius))
    ax.set_zlim((-0.5*radius,2*radius))
    ax.axis('off')
    #fig = plt.figure()
    #ax = fig.gca(projection='3d')
    ##iterating through the cell##
    for stuff happening here : verts are the polygon vertices
          #adding to 3d …
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
2
解决办法
4760
查看次数

标签 统计

matplotlib ×2

python ×2

mplot3d ×1