2017-09-20 74 views
2

我正在試着做出這樣的圖。繪圖矩陣,每個都是數字矩陣的可視化。如何將多個matshow()結果放在一個數字中?

enter image description here

我想代碼看起來應該是這樣的:使用PyPlot

figure() 
for i in 1:100 
    subplot(10, 10, i) 
    matshow(rand(10, 10)) 
end 

但該地塊將在新窗口中獨立蹦出來,而不是在單獨的部分同樣的數字。我做錯了什麼?

在此先感謝您的時間!

+0

你可能有興趣在回答這個類似的問題,今天也問(但地塊相當比PyPlot):https://stackoverflow.com/questions/46335316/generating-subplots-of-heatmaps-in-julia-lang –

回答

3

聲明:我絕對沒有Julia的經驗。所以可能有一些關於以下我不知道的警告。

matshow documentation

matplotlib.pyplot.matshow(A, fignum=None, **kw)
顯示陣列作爲一個新的數字窗口矩陣。 [...]
fignum: [無|整數| False]
默認情況下,matshow()用自動編號創建一個新的數字窗口。如果fignum以整數形式給出,則創建的數字將使用此數字。由於matshow()嘗試將圖形寬高比設置爲數組的其中一個,因此如果提供已有數字的數字,可能會發生奇怪的事情。 如果fignum爲False或0,則不會創建新的數字窗口。因此

兩個可能的選擇可能是:

  • 使用fignum=false

    figure() 
    for i in 1:100 
        subplot(10, 10, i) 
        matshow(rand(10, 10), fignum=false) 
    end 
    
  • 使用imshow代替matshow(因爲imshow不會默認創建一個新的人物)

    figure() 
    for i in 1:100 
        subplot(10, 10, i) 
        imshow(rand(10, 10)) 
    end 
    
2

我使用pyplot首選方法是避免使用「神奇」的是猜測你想要使用的插曲。因此,我通常會做這樣的事情:

figure() 
for i in 1:100 
    ax = subplot(10, 10, i) # assign ax to that subplot 
    ax[:matshow](rand(10, 10)) # call plot method on that specific subplot 
end 

或更大的靈活性,你可以這樣做:

f,axs=subplots(10,10)   # create all the subplots at the start 
for ax in axs     # instead use `for (i,ax) enumerate(axs)` if you need the index) 
    ax[:matshow](rand(10,10)) # plot on each iteration 
end 
相關問題