CanvasJS和多个饼图。

时间:2017-12-06 14:48:34

标签: javascript asp.net-mvc

我必须为网站创建饼图。在我看来,根据我需要的数量,我无法动态渲染饼图。在最大值我必须渲染28.所以,我认为我必须输入

<script type="text/javascript">
window.onload = function () {
    var chart = new CanvasJS.Chart("chartContainer",
    {
        title:{
            text: "Gaming Consoles Sold in 2012"
        },
        legend: {
            maxWidth: 350,
            itemWidth: 120
        },
        data: [
        {
            type: "pie",
            showInLegend: true,
            legendText: "{indexLabel}",
            dataPoints: [
                { y: 4181563, indexLabel: "PlayStation 3" },
                { y: 2175498, indexLabel: "Wii" },
                { y: 3125844, indexLabel: "Xbox 360" },
                { y: 1176121, indexLabel: "Nintendo DS"},
                { y: 1727161, indexLabel: "PSP" },
                { y: 4303364, indexLabel: "Nintendo 3DS"},
                { y: 1717786, indexLabel: "PS Vita"}
            ]
        }
        ]
    });
    chart.render();
}
</script>
<script type="text/javascript" src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
</head>
<body>
<div id="chartContainer" style="height: 300px; width: 100%;"></div>

此代码28次。但是,有时我不需要所有28个饼图。所以我想如果不需要它们我可以隐藏饼图。但是,主要问题是,“我可以动态分配canvasJS饼图”吗?所以我只有一个主代码块可以创建X个饼图。

1 个答案:

答案 0 :(得分:0)

知道了。所以按照我原来的评论。我在数据部分硬编码了2元组变量,只是为了让基本思想运行起来。所以没有使用可变数据。但是,我只是简单地创建了一系列图表。使用pieContainer + i的命名约定。在我的HTML代码中的位置。我有29个div元素与常规pieContainer + 1。

var charts = [];
var data = [];

function populatePieCharts(size)
{
    for (i = 0; i < size; i++)
    {
        console.log("FFFF" + i)
        charts[i] = new CanvasJS.Chart("pieContainer" + i,
            {
                title: {
                    text: i
                },
                legend: {
                    maxWidth: 350,
                    itemWidth: 120
                },
                data: [
                    {
                        type:"pie",
                        showInLegend: true,
                        legendText: "{indexLabel}",
                        dataPoints: [
                            { y: 4181563, indexLabel: "PlayStation 3" },
                            { y: 2175498, indexLabel: "Wii" },
                            { y: 3125844, indexLabel: "Xbox 360" },
                            { y: 1176121, indexLabel: "Nintendo DS" }
                        ]
                    }]
            }); 
    }
    renderCharts(size)
}
function renderCharts(chartAmount)
{
    console.log(charts.length);
    for (i2 = 0; i2 < chartAmount; i2++)
    {
        charts[i2].render();
        console.log(i2);
    }
}

这让我又迈出了一步。而不是硬编码29 div元素。我可能只是根据所需的饼图动态创建div元素。