我有一个函数,它沿着沿着两个轴绘制数据,并根据它们到对角线的距离给它们上色:
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
值合并组合在一起,在此基础上建立一个色标,然后为每个图再次将它们分离回来?
1条答案
按热度按时间mklgxw1f1#
根据所有数据计算到对角线的最大距离。
将此
maxDist
作为参数传递给scatter_diagdistance
在散点图调用的参数
vmin
和vmax
中使用它。它将在normalize函数中使用,而不是z
数组中的局部最大值。字符串
你的距离计算错了。
点
(1.0,0)
到对角线的距离为0.5*sqrt(2)
,而不是1.0
你画的对角线不对,画网格看问题。
它不通过
(1,1)
。它是从一个角到另一个角画的。在你的图中是
(1.1,1.3)
很可能也没有通过
(0,0)