2015-04-21 90 views
0

看一看下面的情節:麻煩與傳說

enter image description here

我產生這種用下面的代碼:

 fig, axes = plt.subplots(1,2) 
     axes[0].set_title("$K = " + str(K) + " , \sigma = " + str(sigma) + "$") 
     heatmap1 = axes[0].imshow(X1, interpolation='none', cmap=plt.get_cmap("seismic")) 
     fig.colorbar(heatmap1) 
     axes[1].set_title(r"$K = " + str(K) + ", \sigma = " + str(sigma) + "$") 
     heatmap2 = axes[1].imshow(X2, interpolation='none', cmap=plt.get_cmap("seismic")) 
     fig.colorbar(heatmap2) 

     plt.subplots_adjust(left=None, bottom=None, right=None, top=None, 
          wspace=0.4, hspace=.4) 
     plt.show() 

不過,我想糾正以下的事情:

  1. 我希望第二個地塊的尺寸與第一個尺寸相同
  2. 左側的傳說應該只出現一次
  3. 傳說應該是大小兩個次要情節
  4. 的y軸相同

任何人可以幫助我這些要求?

+0

哪裏是'這裏legend'?你是否將'title'稱爲傳說? – ThePredator

+0

傳說我的意思是右邊的兩個酒吧。 – toom

+1

如果您想讓顏色條只出現一次,爲什麼要調用它兩次?我可以看到你有兩個不同的熱點圖,那麼你爲什麼只需要一次?你可以嘗試'fig.colorbar(heatmap1,ax = axes [0])' – ThePredator

回答

2

下面是你的代碼的一些編輯,你做了什麼(我認爲)。

不是調用兩次色彩地圖,而是將兩個地塊的色階限制設置爲相同(使用vminvmax)。然後,爲了使顏色條與圖的高度相同,在保存圖形後,需要獲取其中一個子圖的y位置,並使用它們爲顏色條創建單獨的座標軸(否則它們將從,並縮小,你的一個子圖)。

您可能需要玩弄subplots_adjust中的值才能使之合適。

import matplotlib.pyplot as plt 
import numpy as np 

X1=np.random.rand(10,10) 
X2=np.random.rand(10,10) 
K,sigma=10,1.5 

vmin = np.minimum(X1,X2).min() 
vmax = np.maximum(X1,X2).max() 

fig, axes = plt.subplots(1,2) 

axes[0].set_title("$K = " + str(K) + " , \sigma = " + str(sigma) + "$") 
heatmap1 = axes[0].imshow(X1, interpolation='none', cmap=plt.get_cmap("seismic"), 
          vmin=vmin,vmax=vmax) 


axes[1].set_title(r"$K = " + str(K) + ", \sigma = " + str(sigma) + "$") 
heatmap2 = axes[1].imshow(X2, interpolation='none', cmap=plt.get_cmap("seismic"), 
          vmin=vmin,vmax=vmax) 

plt.subplots_adjust(left=None, bottom=None, right=0.8, top=None, 
        wspace=0.4, hspace=.4) 

fig.savefig('test.png') 
cpos = [axes[0].get_position().bounds[1], 
     axes[0].get_position().bounds[3]] 

cax = fig.add_axes([0.9,cpos[0],0.01,cpos[1]]) 

fig.colorbar(heatmap1,cax=cax) 

fig.savefig('test.png') 

enter image description here