目标是让这两个图相互叠加。目标是在某些行中获得细分的外观。通过打印包含更多列的图形,然后将其与更少列的图形重叠,我们可以获得该效果。
然而,调用第二个斧头完全覆盖了第一个斧头。
我们怎样才能达到这个效果?
编辑*
我相信ax标签可能是一个线索。
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次。
答案 0 :(得分:2)
在这种情况下调用热图的正确方法是使用ax作为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)