【问题标题】:Chart.js: Can I change the "OriginalOptions" variable within the chartjs-zoom-plugin?Chart.js:我可以更改 chartjs-zoom-plugin 中的“OriginalOptions”变量吗?
【发布时间】:2021-03-01 14:56:24
【问题描述】:

我有一个图表,每分钟更新一个新数据点。这个图表也使用了chartjs-zoom-plugin来让用户放大。我的网页上有一个按钮调用了chart.resetZoom()函数让用户快速地一直放大,但它只是放大超出图形的原始范围。例如,图表以 100 个数据点开始,一旦更新到 101 个数据点并且用户单击按钮,图表将重置以显示 0-100 而不是 0-101 的数据点。

查看 chartjs-zoom-plugin 源代码,它看起来像在用户启动他们的第一次缩放/平移时调用了“storeOriginalOptions()”函数,并为“resetZoom( )”函数来引用它应该缩小到的位置。当我添加新数据点时有没有办法更新它,所以 resetZoom() 会一直缩小以包含新数据点?

【问题讨论】:

    标签: javascript charts chart.js chartjs-plugin-zoom


    【解决方案1】:

    是的,我可以从 chartjs-plugin-zoom 0.7.7 开始确认这一点,其中包含有关未记录功能的所有警告。有discussion here 和在Eliz's fiddle 中覆盖storeOriginalOptions(chart) 的实际示例,关键部分是:

    var originalOptions = chart.$zoom._originalOptions;
    helpers.each(chart.scales, function(scale) {
        if (!originalOptions[scale.id]) {
            originalOptions[scale.id] = helpers.clone(scale.options);
        }
    });
    

    因此,如果需要,您可以直接在 $zoom 上编辑属性。如果您知道分配给您的标尺的 ID,并且只想重置到当前设置的坐标轴范围,那么您可以进一步缩短标尺的复制到 _originalOptions

    chart.$zoom._originalOptions = {
        myXID: chart.options.scales.xAxes[0],
        myYID: chart.options.scales.yAxes[0],
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多