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

时间:2017-07-17 02:53:01

标签: python matplotlib seaborn

目标是让这两个图相互叠加。目标是在某些行中获得细分的外观。通过打印包含更多列的图形,然后将其与更少列的图形重叠,我们可以获得该效果。

然而,调用第二个斧头完全覆盖了第一个斧头。

我们怎样才能达到这个效果?

编辑*

我相信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次。

1 个答案:

答案 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)