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

Chart.js条形图的奇怪问题,图像散射

齐弘业
2023-03-14

我在超文本标记语言页面中包含了一个堆叠条形图(带有Chart.js库),可以让用户可视化一些数据。这些数据会随着用户的选择而改变,启用此onClick功能的Javascript函数是:

function aggLav(){
    [...]
    for(i=2; i<src.rows.length-1; i++){
      cells[i]=row.insertCell(j);
      cells[i].onclick = function () {//load graphic
            dati=createData();                  
            makeGrafico(dati, this.innerHTML);                  
            var gr=document.getElementById("canvas");               
            if($(gr).is(':hidden')) $(gr).slideToggle();
        };
}

其中函数createData创建JSON对象(带有标签和数据集)以传递给图形(工作正常),函数makeGrafico():

function makeGrafico(dati, titolo){
var d=getFirstMonday();
var mondays=[]; 
var ctx = document.getElementById("canvas").getContext("2d");
window.myBar = new Chart(ctx, {
            type: 'bar',
            data: dati,
            options: {
                title:{
                    display:true,
                    text:titolo//change to name of procedure
                },
                tooltips: {
                    mode: 'label'
                },
                responsive: true,
                scales: {
                    xAxes: [{
                        stacked: true,
                    }],
                    yAxes: [{
                        stacked: true
                    }]
                }
            }
        });
    }

获取用于显示的参数的名称,以及上一个函数的JSON对象

当我第一次单击一个程序时(具有onclick功能的单元格会拒绝工业程序,不相关),一切进展顺利,图形向上滑动并显示正确的结果。但是当我单击另一个过程时,我希望看到与该过程相关的图形:这是真的,但是当我将鼠标移动到图像上时,图形突然发生变化,使我看到了一段时间我单击的第一个过程的数据。

通常,如果我单击10个不同的过程,并将鼠标悬停在图形上,我会看到所有10个图形相互改变。如果我设法找到图形变化的位置,那么当我将指针放在该位置时,它就会一直改变。

我当然希望使数据(和图形)持久化,并且相对于我单击的最后一个过程。

如何解决这个奇怪的问题?我错过了什么吗?我是这个图书馆的新成员。

共有1个答案

陆才俊
2023-03-14

你可能对这篇文章感兴趣。您需要在<code>makeGrafico

第一次,您应该尝试添加window.myBar.destroy()。如果它不起作用,您应该考虑删除画布元素,然后再次创建它:

var $parent = $('#canvas').parent();
$('#canvas').remove();
$parent.append('<canvas id="canvas"></canvas>');
 类似资料:
  • 我使用chart.js在我的网页上有一个BarChart。 我在其中添加了两个数据点 现在我想要更新那些条A和B,而不是删除它们并再次添加它们(我已经想好了如何做到这一点)。我想让它们垂直移动以适应它们的新值,但我无法找到如何访问图表中已经存在的数据。 没有什么比得上 其中第一个值将是存储数据的索引(F.E.)。 我该怎么做呢?

  • 我刚刚开始使用Chart.js,我很快就变得非常沮丧。我有我的堆叠条形图工作,但是我不能让点击“事件”工作。 我在图表中找到了对GitHub的评论。js声明使用函数<code>getBarsAtEvent 我在画布元素上设置了一个事件监听器(正确的方式): ...然而在我的< code>handleClick函数中,< code > chart . getbarsatevent 是未定义的! 现在

  • 我有一个,每一行都有几个图像按钮。当用户单击列表行时,它将启动一个新的activity。我不得不建立我自己的标签,因为一个问题与相机布局。为获得结果而启动的activity是一张地图。如果我单击按钮启动图像预览(从SD卡上加载图像),应用程序将从activity返回activity返回到结果处理程序,以重新启动我的新activity,它只不过是一个图像小部件。 在上的图像预览是通过光标和完成的。这

  • 在自定义图表上工作,可以根据数据提供的值确定条形图或水平条形图中的条形图的厚度,而不是使用barThickness或barPer百分比/类别百分比的预设宽度。 目标:我可以用包含值和

  • 我正在使用chartjs版本:2.1.4在MVC应用程序中创建图表。我正在使用控制条形图的宽度,以进行固定宽度设置。它在只有条形图的情况下工作正常,但在“堆叠条形图”的情况下,我无法确定条形图的宽度。我正在使用以下代码创建堆叠条形图,如下所示: 在这种情况下,"barper"属性不起作用。请在"chartjs版本: 2.1.4"中建议我解决方案。 提前谢谢

  • 我正在尝试写一些程序,在那里我加载图像到一个面板。以下是我的5个问题: 1>可以加载什么样的(扩展)图像有限制吗?我试着加载一个.bmp文件,即使我用.jpg重命名了它,它也没有加载。但是,加载了一些扩展名为.png或.jpg的其他文件。 就是这样。用一些例子来详细说明会很好。提前道谢。