ZingChart设置饼图大小

Setting Size of Pie Chart in ZingChart

我有一个包含多个饼图的视觉对象(我有一个包含多个单独饼图的图形集)。我希望每个饼图的大小能够反映每个饼图中数据的大小。例如,显示 2010 年收入为 1,000,000 美元的饼图将小于显示 2014 年收入为 2,000,000 美元的饼图。

但是size属性好像对每个饼的大小没有影响,不管我只用数字还是数字加"px".

这个功能真的适用于饼图吗?如果是这样,谁能演示一下。

我是 ZingChart 团队的一员,很乐意为您提供帮助。

使用 dataparse 事件,我们可以检索有关要呈现的图表的必要信息,并在呈现发生之前进行适当的计算和修改。在这种情况下,我们对每个饼图的值感兴趣。

下面的代码片段将计算每个饼图的总数并生成一个百分比修饰符。按照目前的计算,最大的馅饼的大小为 100%,恰好有最大馅饼一半价值的馅饼为 50%。如果您愿意,您当然可以更改此设置。

哦,如果这太过分了,您可以通过在每个图表的 "plot" 对象中设置 "size" 属性来硬编码每个饼图的大小。如果您右键单击并查看图表源,您可以看到这是由我的函数计算得出的。这些值可以是百分比值或像素大小的数值。

如果您有任何问题,请告诉我!

// Dataparse is called when the data is ready for the chart
zingchart.dataparse = function (p, d) {
    console.log(d);
  
    // Get number of series in graphset, initialize array of 0s
    var seriesLength=d.graphset.length;
    var total = new Array(seriesLength);
    while(seriesLength--) total[seriesLength] = 0;
  
    // Calculate the sum of the values in each series (each pie)
    for (var n = 0; n < d.graphset.length; n++) {
        for (var m = 0; m < d.graphset[n].series.length; m++) {
            total[n] += d.graphset[n].series[m].values[0];
        }
    }

    // Find the largest value in the array of totals
    var largest = Math.max.apply(Math, total);
    // Calculate % modifier based off of largest value for each pie chart
    for (var n=0;n<d.graphset.length;n++){
      var sizeModifier=(total[n]/largest)*100;
      // Apply the size modifier to the plot object of each pie chart.
      d.graphset[n].plot.size = sizeModifier + '%';
    }

    // Return modified chart object to be rendered.
    return d;
}

var oData = {
    "layout": "h",
        "graphset": [{
        "type": "pie",
            "plotarea": {
            "margin": "0 40"
        },
            "plot": {
            "value-box": {
                'visible': 1,
              "text":"%v"
            }
        },
            "series": [{
            "values": [169]
        }, {
            "values": [151]
        }, {
            "values": [142]
        }, {
            "values": [125]
        }]
    }, {
        "type": "pie",
            "plotarea": {
            "margin": "0 40"
        },
            "scaleX": {

        },
            "scaleY": {

        },
            "plot": {
            "value-box": {
                'visible': 1,
                "text":"%v"
            }
        },
            "series": [{
            "values": [120]
        }, {
            "values": [89]
        }, {
            "values": [87]
        }, {
            "values": [147]
        }]
    }]
};
zingchart.render({
    id: 'chartDiv',
    data: oData,
    width: 800,
    height: 400
});
<script src="http://cdn.zingchart.com/zingchart.min.js"></script>
<div id='chartDiv'></div>