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

同一页面中的多个chartjs

王锐
2023-03-14

嗨,我试图使用chartjs可以在这个链接中找到www.chartjs.org

我试图用样本代码在同一页上画两个图表

我用两个不同的ID创建了两个不同的div

就像这样

<div id="chart1"></div>
<div id="chart2"></div>

那么在包括这一行之后:

我以这种方式创建了第一个图表:

 window.onload = function(){
    var ctx1 = document.getElementById("chart1").getContext("2d");
    window.myLine = new Chart(ctx1).Line(lineChartData, {
        responsive: true
    });
}

第二张图表是这样的:

   window.onload = function(){
        var ctx2 = document.getElementById("chart2").getContext("2d");
        window.myPie = new Chart(ctx2).Pie(pieData);
    };

两个图表使用的数据与样本相同,所以没有什么变化,但如果我只画一个图表本身,它的工作原理很好,如果我把两个图表在同一时间,我只得到饼图

你能告诉我问题在哪里吗?我想这是某种冲突,但我找不到

共有3个答案

慕容渊
2023-03-14

首先,你只需要一个window.onload事件。没有理由有两个独立的例子。

第二,饼图和折线图的数据集实际上非常不同。

饼图示例数据:

        self.pieData=  [
        {
            value: 65,
            color:"#F7464A",
            highlight: "#FF5A5E",
            label: "New Scenarios"
        },
        {
            value: 297,
            color: "#46BFBD",
            highlight: "#5AD3D1",
            label: "Responses Submitted"
        },
        {
            value: 225,
            color: "#64a789",
            highlight: "#5AD3D1",
            label: "Responses Graded"
        }

    ]

折线图样本数据:

self.lineData= {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [
        {
            label: "New Tests",
            fillColor: "rgba(220,220,220,0.2)",
            strokeColor: "#64a789",
            pointColor: "#64a789",
            pointStrokeColor: "#fff",
            pointHighlightFill: "#fff",
            pointHighlightStroke: "rgba(220,220,220,1)",
            data: [65, 59, 80, 81, 56, 55, 40]
        },
        {
            label: "Responses",
            fillColor: "rgba(151,187,205,0.2)",
            strokeColor: "rgba(151,187,205,1)",
            pointColor: "rgba(151,187,205,1)",
            pointStrokeColor: "#fff",
            pointHighlightFill: "#fff",
            pointHighlightStroke: "rgba(151,187,205,1)",
            data: [128, 148, 140, 119, 186, 127, 190]
        },
        {
            label: "Responses Graded",
            fillColor: "rgba(151,187,205,0.2)",
            strokeColor: "#41e498",
            pointColor: "#41e498",
            pointStrokeColor: "#fff",
            pointHighlightFill: "#fff",
            pointHighlightStroke: "rgba(151,187,205,1)",
            data: [108, 116, 120, 112, 136, 121, 111]
        }
    ]
};

折线图可能没有初始化,因为您给它输入了错误类型的数据。

寇丰
2023-03-14

我没有在不同类型的图表上工作,但我在一个例子上工作,并使用此代码在页面中创建了两个条形图:

<div style="width: 50%">
    <canvas id="canvas" height="450" width="600"></canvas>
</div>

<div style="width: 50%">
    <canvas id="canvas2" height="450" width="600"></canvas>
</div>

在脚本部分,我喜欢这样:

javascript prettyprint-override">var randomScalingFactor = function(){ return Math.round(Math.random()*100)};

var barChartData = {
    labels : ["January","February","March","April","May","June","July"],
    datasets : [
        {
            fillColor : "rgba(220,220,220,0.5)",
            strokeColor : "rgba(220,220,220,0.8)",
            highlightFill: "rgba(220,220,220,0.75)",
            highlightStroke: "rgba(220,220,220,1)",
            data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
        },
        {
            fillColor : "rgba(151,187,205,0.5)",
            strokeColor : "rgba(151,187,205,0.8)",
            highlightFill : "rgba(151,187,205,0.75)",
            highlightStroke : "rgba(151,187,205,1)",
            data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
        }
    ]

}
    var barChartData2 = {
    labels : ["January","February","March","April","May","June","July"],
    datasets : [
        {
            fillColor : "rgba(220,220,220,0.5)",
            strokeColor : "rgba(220,220,220,0.8)",
            highlightFill: "rgba(220,220,220,0.75)",
            highlightStroke: "rgba(220,220,220,1)",
            data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
        },
        {
            fillColor : "rgba(151,187,205,0.5)",
            strokeColor : "rgba(151,187,205,0.8)",
            highlightFill : "rgba(151,187,205,0.75)",
            highlightStroke : "rgba(151,187,205,1)",
            data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
        }
    ]

}
window.onload = function(){
    var ctx = document.getElementById("canvas").getContext("2d");
    window.myBar = new Chart(ctx).Bar(barChartData, {
        responsive : true
    });
    var ctx2 = document.getElementById("canvas2").getContext("2d");
    window.myBar = new Chart(ctx2).Bar(barChartData2, {
        responsive : true
    });
}
尹欣怿
2023-03-14

仅使用一个窗口。onload

window.onload = function () {
        window.myRadar = new Chart(document.getElementById("canvas1").getContext("2d")).Radar(radarChartData, {
            responsive: true
        });
        var G2 = document.getElementById("canvas2").getContext("2d");
        window.myBar = new Chart(G2).Bar(barChartData, {
            responsive: true
        });
    }
 类似资料:
  • 我是ExtJS新手。 我在同一页上有两个网格。第一个网格有3列。只有第二个。问题是,当渲染第二个网格时,它会覆盖第一个网格的属性。 例如,当我试图编辑第一个网格中的行时,它需要第二个网格中的行的宽度。

  • 本文向大家介绍js实现同一个页面多个渐变效果的方法,包括了js实现同一个页面多个渐变效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现同一个页面多个渐变效果的方法。分享给大家供大家参考。具体分析如下: 这里可实现5个元素中随便一个,鼠标移上去透明度渐渐增加,鼠标移出,透明度渐渐减小的效果。 要点一: 根据目标值和当时值的对比,来决定是正向还是负向速度。 要点二: 给每一个元

  • 本文向大家介绍js实现同一页面多个不同运动效果的方法,包括了js实现同一页面多个不同运动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现同一页面多个不同运动效果的方法。分享给大家供大家参考。具体分析如下: 要点一: 从样式表中根据id和属性名取值。 要点二: 如果设置的是透明度的值,因为有可能会是小数点,所以需要用parseFloat,然后有可能会有小数,用round方法

  • 本文向大家介绍js实现同一页面多个运动效果的方法,包括了js实现同一页面多个运动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现同一页面多个运动效果的方法。分享给大家供大家参考。具体分析如下: 实现原理,就是在调用的时候,给这五个元素,循环加上事件。需要注意的是,每个元素的定时器需要分开。 要点一: 缓冲运动效果,一开始速度很快,然后越来越慢,直到停止 如果速度大于0,则

  • 我想要多个图像滑块在相同的页面与相同的类名使用JavaScript。我已经做了一个图像滑块。 问题是当我使用多个图像滑块时,它不能正常工作。我尝试了childNodes,但它也不能工作。我该如何解决这个问题呢? 并且我正在尝试使滑动动画也(左和右)的图像滑块。 如果你需要更多的解释,让我知道。 我给出了下面的代码; HTML CSS JavaScript

  • 如何生成多个页面的pdf报告,每个页面上的内容相同。以下是单页报告的代码。多个页面应位于单个pdf文件中。