如何在斧头有不同列的 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)
目标是让这两个图相互重叠。目标是在某些行中出现细分。通过打印具有更多列的图形,然后用具有更少列的图形覆盖它,我们可以获得这种效果。
但是调用第二个斧头会完全覆盖第一个。
怎样才能达到这个效果呢?
编辑*
我相信斧头标签可能是一个线索。
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)