ChartJs:如何按时间值(而不是像素)以编程方式平移

2024-05-18

我使用的是chartJs 3.6.1;和 Chartjs-plugin-zoom 1.2.1 (但我认为这并不重要:)) 我有 2 个时间序列折线图,当我通过拖放平移一个图表时,我也想移动/平移另一个图表!

为此,我为 graphA 启用了缩放/平移 -graphA.zoom.pan.enabled=true,并且它有onPanComplete当我想运行图形平移时的函数。变焦没有问题 - 它有graphA.getZoomLevel()功能;这样我就可以使用graphB.zoom(graphA.getZoomLevel()).* 但是平移的情况又如何呢?Edit:*不,这不好。它使用不同的比例,某种指数...比如... 1.0 意味着 1.0,但 1.5x 意味着 ~1.7x 变焦,1.98x 意味着 50x 变焦,2x 意味着无限(即 80.000x 变焦)

到目前为止,我可以获得可见区域:chart.scales.xAxes.min(...和最大值) - 但它返回当前可见的时间值!这pan()等待像素的函数:graphB.pan(100, undefined, undefined),而且它只是相对于当前位置的偏移量,而不是绝对位置集。我可以说“将图表向左移动 1 分钟”吗?我看到某种“比例”设置,但我不明白它是如何工作的......或者最好的说法是:“将图表移动到从 2022.03.01 12:00:00 开始”!或者..作为解决方法,我可以计算像素,但为此我需要知道图表数据的宽度,但它是一个大“画布”并且无法获取它。


您可以使用getPixelForValuex 轴上的方法。您这样做了 2 个时间点,从这两个时间点您就知道它们彼此之间的距离有多远。然后,您可以计算出在您想要的任何时间范围内移动图表需要多少像素。

Edit:
如果你只想要图表区域的宽度,你可以这样做:

const chart = new Chart(ctx, config);
const chartAreaWidth = chart.chartArea.width;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChartJs:如何按时间值(而不是像素)以编程方式平移 的相关文章

随机推荐