如何在生成的热图上显示图像?

Posted

技术标签:

【中文标题】如何在生成的热图上显示图像?【英文标题】:How can I display an image on top of a generated heatmap? 【发布时间】:2021-08-14 19:28:17 【问题描述】:

我正在尝试使用 heatmap.js 创建热图,按照这篇文章中的说明进行操作:How to render heatmap.js on an image?

我的所有代码都与该示例中的代码相同。只是一个简单的生成的热图,在 CSS 中添加了背景图像。请查看该帖子的截图:

但我想在热图上显示一个图像,所以是前景图像而不是背景图像。

我尝试过使用 plotly,但不幸的是,这是为了在带有 SPIFFS 的 ESP-32 上运行,所以我的空间和处理能力非常有限。即使在我使用部分捆绑包将文件大小减小到足够小之后,网页也根本无法加载。如果可能的话,我真的更喜欢使用 heatmap.js,因为它的占用空间要小得多。

为了进一步解释我想要做什么,我想把这个半透明的图像放在生成的热图之上:

所以最终想要的结果看起来像这样,只显示前景图像透明部分内的热图:

我使用的所有代码都与前面提到的帖子相同,只是一个简单的生成的热图,并在 CSS 中添加了背景图像。我还在这里使用了这个文档来构建一个示例热图,https://www.patrick-wied.at/static/heatmapjs/docs.html

有没有使用 HTML/CSS/javascript 的简单方法?

【问题讨论】:

【参考方案1】:

我不知道热图,因此无法对此进行测试,但从问题中给出的信息来看,如果背景图像的放置如图所示,那么应该可以放置前景图像。

我们所做的是在 #heatmap 上设置一个 after 伪元素的样式,为其提供正确的尺寸,使用 z-index 将其放在热图元素上方,并为其提供所需的图像作为其背景。然后图像应该看起来位于热图元素上方 - 我假设它会遮住它的一部分。

您需要确保热图元素已定位,以便其后伪元素知道将自身定位在相关位置。

#heatmap 
  width: as you want
  height: as you want
  background-image: if you still want it to have one
  any other styling you want heatmap to have

  position: relative;


#heatmap::after 
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1; /* make sure this is big enough - higher than the heatmap's z-index */
  background-image: url(the image you want to be in the foreground);
  background-size: cover; /* or contain depending on what you want */
  background-repeat: no-repeat;
  background-position: center center; /*or wherever you want it */

【讨论】:

感谢您的建议!我会试一试,然后把结果发回这里!

以上是关于如何在生成的热图上显示图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python seaborn heatmap 旁边有一个显示行值总和的栏?

热图显示服务器上的文件系统差异?

在 Codeigniter googlemap v3 库上显示热图

我们如何才能在热图中仅显示与某个阈值相关的特征?

GridSearchCV 结果热图

Plotly:如何在带注释的热图中舍入显示文本但在悬停时保持完整格式?