当前位置: 首页 > 知识库问答 >
问题:

在Chart.js和flask中使用多个图表时,图表在缩放时会发生不同的更改

司空鸿禧
2023-03-14

由于某些原因,在滚轮缩放上,我的图表仅替换为一个图表。

首先,我使用flask为每个图表创建一个画布

        <div height=50% id="chartcanvas">
            <canvas id="{{site}}canvas" ></canvas>

        </div>
        {% endfor %}

然后我在每个画布上循环并为其分配一个图表。基本上,我会重新整理每个图表以突出显示某个站点。当页面加载时,它会起作用,但当您尝试在图表上进行交互或缩放时,它只会用其中一个图表(列表中的第一个)替换数据

data_all = ...//initial variable with data

    {% for site in sites %}
    
    var {{site}}data=data_all
    i=1
    for (s of {{site}}data){
    if (s.label == '{{site}}'){
        s.borderColor='#0000ff'
        s.order=0
        } else {
        s.borderColor='rgba(166,166,166,0.2)'}
        s.order=i
    i++
    };
    


        
        var {{site}}ctx = document.getElementById('{{site}}canvas').getContext('2d');
        var {{site}} = new Chart({{site}}ctx, {
          type: 'line',
          data: { datasets: {{site}}data },
          options: {
            responsive: true,
            
            
            zoom: {
                    enabled: true,
                    mode: 'x'
                },
            pan: {
              enabled: true,
              mode: 'xy'
                },
              

            scales: {
              xAxes: [{
                type: 'time'
              }]
            },
            
          }
        });
        
    

    
    {% endfor %}        

我也正在加载这些版本的chart.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.js"></script>

<script src="http://cdnjs.cloudflare.com/ajax/libs/hammer.js/2.0.8/hammer.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-zoom@0.7.0"></script>
    

共有1个答案

梅庆
2023-03-14

解决此问题的一个选项是禁用缩放。现在我没有缩放。。。我还确定问题出在绘图的任何时候,例如调整窗口大小。

 类似资料:
  • 图表缩放指的是局部放大或缩小图表,可以更方便的查看图表数据。 Highcharts支持两种方式缩放,缩放(zoom)和平移(panning), 并且是完美支持移动端手势操作的 。 一、缩放(zoom) 只需要简单设置 zoomType 即可实现图表缩放,例如: $("#container").highcharts({ chart: { zoomType: 'x' } // ..

  • 我正在尝试使用Chart.js在一个页面上创建多个图表。我正在动态创建几个画布来承载这些图表。 每个图表的相关信息都包含在JSON对象中,JSON对象包含在“allDatas”中。 请注意,allDatas中的数据格式正确,并且每个数据都经过测试,我们可以正确创建图表,而不会出现任何问题。画布也是一样,它们都是正确的,我们可以在其中任何一个中显示图表。当我尝试创建多个图表时,会出现问题。 以下是我

  • 我正在使用chart.js在html页面中创建多个图表,并且在Windows加载之后,图表将以每秒的速度动态更新,并使用新的数据值。我正在使用chart.js update()函数处理更新。所有创建的图表都存储在全局数组中,然后获取这些图表进行更新。 当我第一次打开html页面时,每秒都会更新图形(显示实时测量数据),但当我移动到webapp中的另一个子页面,然后返回到图形应该所在的页面时,所有画

  • 我正在使用Android API的GoogleMaps和一个自定义的TileProvider,它使用URL获取缩放/x/y格式的平铺,以显示自定义的世界地图。 这里没什么特别的。该应用程序用于使用开放式街道地图。我注意到,在一定的缩放级别上,它会显示更详细的图像。 与谷歌地图相比,OSM的zoomlevel似乎有所不同。这会导致OSM的URL中出现更高的缩放值,而GoogleMaps会将更低的值放

  • 可能吗?怎样 我曾尝试在多个图表、一个图例、多个图表Chart js等上切换Chart.js sync legend。但是,这些解决方案有一个带有图例的图表,并且该图例会影响其他图表。 我应该隐藏图表并只显示图例吗?我应该画一张没有数据的图表吗? 如果你能告诉我,我就毕业了 HTML JS

  • 我设置了一个chart.js图表,它使用mysql数据库中的数据。我已经建立了一个rest服务来提供tha数据,具有定义分组IE的能力。数据每隔5分钟测量一次,但我将其分组为3小时段,使用我的SQL语句 我希望能够通过定义一个新的粒度来改变数据的粒度。 我创建了一个更新函数来将请求发送到后端,并更新图表。 图表已更新,但默认值有61个条目(目前),最细粒度的数据有180个条目。所发生的情况是,数据