python – Matplotlib:是否可以创建具有给定y偏移量的新轴,而无需创建子图?

借助Matplotlib中的sankey-toolbox,我们可以自动绘制sankey-diagram:sankey-object的位置根据其先前对象的位置自动计算,不能手动给出;并且当初始化sankey图时,将使用轴的输入分配第一个sankey对象的位置. ((0,0)点将是此对象的中心点)

以下是这种情况:我想绘制两个具有给定y偏移量的sankey图,并且应该连接两个图中的几个端口.因此,需要在同一子图中具有y偏移的两个坐标系.我尝试了’add_axes’方法,但是使用这种方法会创建一个新的子图,并且会出现图形缩放问题.

现在这是一个问题:是否可以创建具有给定y偏移量的新坐标系,而无需创建子图?

最佳答案 不是一个完整的答案,但它可以帮助您找到解决方案:

sankey.add()支持transform关键字参数.根据您的图形,创建一个新的转换实例,并将其用于图形的移位部分:

offset = transforms.ScaledTranslation(0.0, 0.5, fig.dpi_scale_trans)
new_transform = ax.transData + offset
sankey.add(flows=[-0.25, 0.15, 0.1], fc='#37c959', label='two',
           orientations=[-1, -1, -1], prior=0, connect=(0, 0),
           transform = new_transform)

为了创建新的转换,辅助函数matplotlib.transforms.offset_copy()也可能有用:

new_transform = offset_copy(ax.transData, fig=fig,
                            x = 0.05, y=0.10, units='inches')
点赞