【问题标题】:I want to add extra space between the columns of matplotlib heatmap, how do I do it?我想在 matplotlib 热图的列之间添加额外的空间,我该怎么做?
【发布时间】:2020-12-28 20:34:32
【问题描述】:

我正在尝试在热图的列之间添加额外的空间。现在,我已将热图的线宽设置为 18,这使得“图块”之间的间隙均匀,但我希望两列之间的间隙比水平间隙宽。

我查看了 matplitlib.collections 源代码,发现:

 def set_linewidth(self, lw):
        """
        Set the linewidth(s) for the collection.  *lw* can be a scalar
        or a sequence; if it is a sequence the patches will cycle
        through the sequence

        Parameters
        ----------
        lw : float or sequence of floats
        """
        if lw is None:
            lw = mpl.rcParams['patch.linewidth']
            if lw is None:
                lw = mpl.rcParams['lines.linewidth']
        # get the un-scaled/broadcast lw
        self._us_lw = np.atleast_1d(np.asarray(lw))

        # scale all of the dash patterns.
        self._linewidths, self._linestyles = self._bcast_lwls(
            self._us_lw, self._us_linestyles)
        self.stale = True

不过,我似乎对这个功能一无所获。我试图给它一个宽度列表而不是一个变量,但线宽只注册列表中的第一个元素。

编辑: 非常感谢 JohanC 的解决方案。 对于那些询问的人,这是我拥有的导致图片中的热图的代码。

self.axes[i].pcolormesh(data,  cmap = "YlGnBu", edgecolor=BG_COLOUR, \
      linewidths=18, vmin=0.0, vmax=1.0)

以下代码是JohanC的解决方案的应用

self.axes[sel].pcolormesh(data,  cmap = "YlGnBu", vmin=0.0, vmax=1.0)
for j in range(data.shape[0] + 1):
     self.axes[sel].axhline(j, color=BG_COLOUR, lw=20)
for j in range(data.shape[1] + 1):
     self.axes[sel].axvline(j, color=BG_COLOUR, lw=60)

【问题讨论】:

  • 您应该粘贴代码以获取热图,而不是 matplotlib 的源代码,以便其他人更好地了解您的问题。
  • 具体来说,如果这些是网格模式中的 6 个单独的热图(gridspec 可能会有所帮助),或者它们是否是单个图上的网格线,将会很有帮助。你能发布一个 MWE 吗?

标签: python matplotlib heatmap


【解决方案1】:

您可以显式地绘制不同宽度的水平线和垂直线:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

data = np.random.rand(5, 2)
ax = sns.heatmap(data)
for i in range(data.shape[0] + 1):
    ax.axhline(i, color='white', lw=20)
for i in range(data.shape[1] + 1):
    ax.axvline(i, color='white', lw=60)
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-06
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2011-08-12
    相关资源
    最近更新 更多