簡體   English   中英

matplotlib 將子圖組合成一個沒有軸和間隙的圖

[英]matplotlib combining subplots into a single plot with no axis and no gaps

我有一個看起來像這樣的圖像:

在此處輸入圖像描述

它是使用 matplotlib 生成的,使用:

for slice_idx in range(mandrill_t.highpasses[1].shape[2]):
    print(slice_idx)
    subplot(2, 3, slice_idx+1)
    imshow(np.abs(mandrill_t.highpasses[1][:,:,slice_idx]), cmap='Spectral', clim=(0, 1))

但是,對於我的用例,我希望所有這 6 個圖像在一個沒有間隙或軸的圖像中 - 我沒有要顯示的示例輸出圖像,但基本上,我希望它們水平堆疊(其中 3 個)和垂直(其中 2 個),以便 6 個圖像是單個圖像。

我試圖四處尋找類似的問題以從中汲取靈感,但到目前為止還沒有運氣:(

任何指針都會很棒。

這就是GridSpec的用途(參見plt.subplots文檔):

只需在開頭添加以下行:

subplots(2, 3, gridspec_kw={"wspace": 0, "hspace": 0})

您可能還必須將一些繪圖元素設置為不可見,但如果沒有 MCVE,就很難准確判斷出哪個元素。

您必須指定網格參數:

  • 2 行
  • 3列
  • 0 寬度空間
  • 0 高度空間

使用matplotlib.pyplot.subplots

fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})

然后你可以遍歷創建的軸,對於每個軸,你必須首先顯示圖像並將軸設置為'tight' ,然后設置為'off'

for ax in axes.flatten():
    ax.imshow(img)
    ax.axis('tight')
    ax.axis('off')

您的代碼會略有不同,因為您正在為每個ax繪制不同的圖像。

完整代碼

import matplotlib.pyplot as plt

img = plt.imread('img.jpeg')

fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})

for ax in axes.flatten():
    ax.imshow(img)
    ax.axis('tight')
    ax.axis('off')

plt.show()

在此處輸入圖像描述

暫無
暫無

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

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