Vaadin 热图不支持 40x40 (1600) 点?

问题描述

在 Vaadin 14.6.1 中,我尝试通过 here 中的文档/示例创建 Vaadin 热图。

但是,我遇到了一些问题,以下按重要性降序列出:

  1. 热图支持 30 行 x 30 列;但是当我尝试 40 行 x 40 列时,整个热图显示单一颜色(在我的例子中是蓝色)。
  2. 是否可以手动设置配色方案的最小数值和最大数值。这样,如果我一天绘制我的数据并且它的值在 0 到 1 的范围内,但是在另一天的另一个数据集上,数值范围在 0 到 0.5 之间,配色方案范围 不会自动更改(在 0 到 0.5 之间)并使用户感到困惑。
  3. documentation 中,列出了以下方法,但它们在 Vaadin 14.6.1 中似乎不存在
plotOptions.setBorderColor(SolidColor.WHITE);
plotOptions.setBorderWidth(2);
  1. 当我将鼠标悬停在数据点上时,工具提示是否可以显示数值(而不是 x、y 坐标或系列名称等?)
  2. 数据点的数量有限制吗?我希望如果上面的 #1 得到解决,我可以绘制 100 x 100(即 10,000)点热图。
  3. 如果我绘制 100by100,x 和 y 轴上会有很多标签。在我的例子中,x 和 y 轴实际上是数字,所以我按照文档的建议做了,只是在 xaxis 和 yaxis 点中放置了类别标签。但是,有没有办法只显示一个“第n个”标签,这样x轴和y轴就不会那么拥挤了? (这基本上模仿了 Vaadin 对普通折线图的 xaxis 和 yaxis 所做的事情。

解决方法

我对 Vaadin Chart 不是很熟悉,但我可以评论这些问题:

(1) 对于 40x40 的项目,您会超过 1000 的阈值,此时图表出于性能原因切换到“turbo”模式。这似乎与热图系列不兼容。您可以通过设置 plotOptions.setTurboThreshold(0);

来禁用 Turbo 模式

(2) 不幸的是,ColorAxis 不支持这个,它只有一个用于最小和最大颜色的 API。不过,这绝对是一个有效的用例,它似乎得到了 Vaadin 图表在幕后使用的 Highcharts 库的支持。您应该考虑在 Github repo 中为此打开功能请求。

(3) 这似乎是一个文档问题。这些方法在更高的 Vaadin 平台版本中可用,但在 14.6 中不可用。

(5) 理论上不会,但实际上由于过多的 DOM 元素(100x100 的快速测试使浏览器冻结 10 秒),浏览器的性能会受到巨大影响。恐怕该组件并不是真正为这种极端用例而设计的。在这种情况下,最好使用使用画布的低级 JS 绘图库,或者在服务器端绘制图像并在浏览器中显示。也许您还可以考虑修改您的用例,以便只显示数据的一个切片,并允许用户在切片之间切换。