2017-02-22 4 views
1

以下に示すように、matplotlibにいくつかのヒートマップをプロットしています。私は、異なる寸法の異なる2次元アレイのスピアマンの相関関係をプロットしていますmatplotlibのカスタムpcolor

with open(gene_peak) as f: 
    count = 1 
    for line in f: 
     np_array=[] 
     gene_peak = line.strip().split("\t") 
     gene_id = gene_peak[0] 
     peaks = gene_peak[1].split(",") 
     for peak in peaks: 
      np_array.append(enhancer_fc[peak]) 
     data, pval = stats.spearmanr(np.transpose(np.array(np_array))) 
     plt.subplot(4,3,count+1) 
#  plt.title(gene_id) 
     plt.pcolor(data, cmap=plt.cm.OrRd, vmin=-1, vmax=1) 
     plt.gca().invert_yaxis() 
     plt.gca().set_aspect(aspect='equal', adjustable='box-forced') 
     plt.xticks([]) 
     plt.yticks([]) 
     print count 
     count += 1 
    plt.show() 

enter image description here

は、ここに私のループです。

質問:

存在相関値であるので、それらは、私は(カスタムカラーバーを追加したい-1から1までの範囲)赤色以下-0.4の勾配を示す0.4を開始する上記の値は、勾配を示すように私は0.4より大きく-0.4より小さい点だけを表示するように、青色で表示されます。

enter image description here

また、私は、画像がきれいに見えるような唯一のカラーバーを()をプロットしたいと思います。助けていただければ幸いです。

答えて

0

MatplotlibのListedColorMapを使用して独自の離散カラーマップを定義できます。プロットの1つからカラーバーを使用し、それを視覚的にすべてのプロットを表すように定位置に置くことができます。指定した色の例を次に示します。

from matplotlib import colors 


discrete_colors = [(255, 0, 20), (255, 70, 65), (255, 128, 110), (255, 181, 165), (64, 64, 64), 
    (0, 0, 0), (64, 64, 64), (124, 128, 217), (102, 107, 216), (69, 76, 215), (33, 33, 245)] 
discrete_colors = [(r/255., g/255., b/255.) for r, g, b in discrete_colors]   

my_colormap = colors.ListedColormap(discrete_colors) 

subplot(211) 
data = 2 * np.random.rand(10, 10) - 1.0 
pcolor(data, cmap=my_colormap, vmin=-1, vmax=1) 
subplot(212) # Some other plot 
data = 2 * np.random.rand(10, 10) - 1.0 
pc = pcolor(data, cmap=my_colormap, vmin=-1, vmax=1) 

fig = gcf() 
fig.subplots_adjust(right=0.70) 
cax = fig.add_axes([0.80, 0.15, 0.05, 0.7]) 
fig.colorbar(pc, cax=cax) 

コードを少し調整する必要があるかもしれません。私はIPython 2.7を使用しています。 Custom discrete colormap and colorbar placement.

関連する問題