繁体   English   中英

matplotlib中的自定义pcolor

[英]Custom pcolor in matplotlib

我正在matplotlib中绘制几个热图,如下所示。

在此输入图像描述

这是我的循环:

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()

我正在绘制不同尺寸的不同2D阵列的spearman相关性。

题:

有相关值,因此它们的范围从-1到1.我想添加自定义colorbar(),使得高于0.4的值开始显示红色渐变,低于-0.4显示蓝色渐变,这样我只显示点大于0.4且小于-0.4。

在此输入图像描述

此外,我想只绘制一个colorbar(),使图像看起来更干净。 任何帮助将不胜感激,谢谢。

您可以使用ListedColorMap的ListedColorMap定义自己的离散色图。 您可以使用其中一个图中的颜色条,并将其放置在适当的位置,以便直观地表示所有图形。 以下是您给出的颜色示例:

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。 自定义离散色彩图和色条位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM