在多个图表上缩放颜色

问题描述 投票:0回答:1

我有这个函数,可以沿两个轴绘制数据,并根据它们到对角线的距离对它们进行着色:

def scatter_diagdistance(x, y) :
    z = abs(y-x)
    fig, ax = plt.subplots(dpi=200)
    ax2 = ax.twinx() ##Create secondary axis
    ax2.set_yticks([]) ##No ticks for the secondary axis
    sc = ax.scatter(x, y, c=z, s=50, edgecolor='none')
    ax2.set_ylabel('Distance from diagonal') ##Label for secondary axis
    ax.plot([0, 1], [0, 1], '-', c="red", transform=ax.transAxes) #Line from 0 to 1
    cbar = fig.colorbar(sc)
    ax.set_xlabel('Ref mutation frequencies')
    ax.set_ylabel('Decoded mutation frequencies')
    return fig, z

它创建的图形如下所示:

对于我项目的下一部分,我想比较几种不同设置之间的这些图表。我想对整个多面板图使用相同的色标,以表明一种方法比其他方法更接近对角线。我还想要关联的颜色条,它不需要包含在图形输出中,因为我稍后将一起编辑面板。

如何将所有

z
值组合在一起,基于此建立色标,然后为每个图再次将它们分开?

python matplotlib colors colorbar
1个回答
0
投票

根据所有数据计算到对角线的最大距离。

将此

maxDist
作为参数传递给
scatter_diagdistance

在参数

vmin
vmax
中使用它来进行散点图调用。它将在归一化函数中使用,而不是
z
数组中的局部最大值。

def scatter_diagdistance(x, y, maxDist):
    # ...
    sc = ax.scatter(x, y, c=z, s=50, edgecolor='none', vmin=0, vmax=maxDist)
    # ...

您的距离计算有误。

(1.0,0)
到对角线的距离为
0.5*sqrt(2)
,而不是
1.0

© www.soinside.com 2019 - 2024. All rights reserved.