我有这个函数,可以沿两个轴绘制数据,并根据它们到对角线的距离对它们进行着色:
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
值组合在一起,基于此建立色标,然后为每个图再次将它们分开?
根据所有数据计算到对角线的最大距离。
将此
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