如何在斧头有不同列的 Seaborn 中覆盖蒙面图? - Python

How to overlay a masked plot in Seaborn where ax have different columns? - Python

目标是让这两个图相互重叠。目标是在某些行中出现细分。通过打印具有更多列的图形,然后用具有更少列的图形覆盖它,我们可以获得这种效果。

但是调用第二个斧头会完全覆盖第一个。

怎样才能达到这个效果呢?

编辑*

我相信斧头标签可能是一个线索。

ax.set_label("axes1")
ax2 = fig.add_axes(ax.get_position(), frameon=False, label='axes2') #$ax.twinx()

像这样创建第二个 ax2 然后调用:

ax2.get_label()
ax.get_label()

显示正确且不同的标签。但是在 运行 以下代码之后:

x1 = np.array([[30., 30.],
              [20., 20.],
              [10., 10.]])
x2 = np.concatenate((x1, x1), axis=1)

fig = plt.figure()
ax = fig.add_subplot(111)
indexes = [10.0, 20.0, 30.0]
columns = ["First", "Second"]
columns2 = ["First", "Second", "Third", "Fourth"]

y1 = pd.DataFrame(data=x1, index=indexes, columns=columns)
y2 = pd.DataFrame(data=x2, index=indexes, columns=columns2)

ax = sns.heatmap(y2, mask=x2 <= .0, annot=False, cbar=False, linewidths=.5)
ax2 = sns.heatmap(y1, mask=x1 >= .0, annot=False, cbar=False, linewidths=.5)

标签变一样了。这意味着它不会打印两个轴,它只是将一个轴写入 2 次。

在这种情况下调用热图的正确方法是使用斧头作为 sns.heatmap()

的参数
sns.heatmap(y2, mask=x2 <= .0, annot=False, cbar=False, linewidths=.5, ax=ax)
sns.heatmap(y1, mask=x1 >= 21.0, annot=False, cbar=False, linewidths=.5, ax=ax2)