簡體   English   中英

如何使用 matplotlib 在子圖中重新縮放 plot

[英]How to rescale a plot in a subplot with matplotlib

我有 4 個子圖,帶有不同的 3D plot 和顏色條。 我想要 plot 我的 3D plot 的 XY 視圖,刪除 x、y、z 軸並調整我的 plot 的大小以使用子圖中的所有可用空間,使 XY 視圖具有與顏色條相同的高度。 我可以刪除軸,但我不知道如何調整圖像大小。 我附上了一個工作代碼來說明這一點。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.tri as mtri
import matplotlib 
import numpy as np

# Create 3D function
n_radii = 8
n_angles = 36
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())
z = np.sin(-x*y)

fig = plt.figure()
for ii in range(1, 4):
    #Plot
    # ============================================================================ 
    ax = fig.add_subplot(2,2, ii, projection='3d')
    cs =ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

    ax.view_init(90, 0)
    plt.title(ii)
    # ax.axis('off')
    plt.grid(b=None)

    # Create color bar
    # ============================================================================ 
    norm = matplotlib.colors.Normalize(vmin = 0, vmax = 1, clip = False)
    m = plt.cm.ScalarMappable(norm=norm)
    m.set_array([])
    plt.colorbar(m)

plt.tight_layout()
plt.show()
#plt.savefig("test.pdf",bbox_inches='tight')

知道我該怎么做嗎?

我已經添加了

plt.gca().set_axis_off()
plt.axis([0.6 * x for x in plt.axis()])

到隱藏軸並將視圖設置為其先前值的 60% 的代碼。 結果如下所示:

圖1

完整代碼:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import matplotlib.tri as mtri
import matplotlib 
import numpy as np

# Create 3D function
n_radii = 8
n_angles = 36
radii = np.linspace(0.125, 1.0, n_radii)
angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)[..., np.newaxis]
x = np.append(0, (radii*np.cos(angles)).flatten())
y = np.append(0, (radii*np.sin(angles)).flatten())
z = np.sin(-x*y)

fig = plt.figure()
for ii in range(1, 4):
    #Plot
    # ============================================================================ 
    ax = fig.add_subplot(2,2, ii, projection='3d')
    cs =ax.plot_trisurf(x, y, z, linewidth=0.2, antialiased=True)

    ax.view_init(90, 0)
    plt.title(ii)
    # ax.axis('off')
    plt.grid(b=None)

    # Create color bar
    # ============================================================================ 
    norm = matplotlib.colors.Normalize(vmin = 0, vmax = 1, clip = False)
    m = plt.cm.ScalarMappable(norm=norm)
    m.set_array([])
    plt.colorbar(m)

    plt.gca().set_axis_off()
    plt.axis([0.6 * x for x in plt.axis()])

plt.tight_layout()
plt.show()
#plt.savefig("test.pdf",bbox_inches='tight')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM