【发布时间】: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