如何在NVD3饼图上显示百分比%?

时间:2013-05-31 14:52:20

标签: javascript d3.js pie-chart nvd3.js

我一直试图在NVD3 Pie Chart上显示百分比,但我看不出怎么做...我正在寻找类似this

的内容

首先,是否有图表选项或在饼图的每个部分显示内部的方法?如果是,是否有显示百分比而不是确切值的选项?

谢谢你,享受你的周末!

2 个答案:

答案 0 :(得分:9)

从NVD3版本1.1.10开始,可以调整标签的类型

只需拨打chart.pie.labelType("percent");,即可以使用相应的百分比标记每个切片。也可以显示每个切片的键labelType("key")或值labelType("value")

完整示例:

var slices = [
    {name:"Part 1",value:23},
    {name:"Part 2",value:38},
    {name:"Part 3",value:67}
];

nv.addGraph(function() {
    var chart = nv.models.pieChart()
        .x(function(d) { return d.name })
        .y(function(d) { return d.value })
        .color(d3.scale.category10().range())
        .width(300)
        .height(300);

    chart.pie.pieLabelsOutside(false).labelType("percent");

    d3.select("#chart")
        .datum(slices)
        .transition().duration(1200)
        .attr('width', 300)
        .attr('height', 300)
        .call(chart);

    chart.dispatch.on('stateChange', function(e) { nv.log('New State:', JSON.stringify(e)); });

    return chart;
});

答案 1 :(得分:5)

我假设您已经能够使样本NVD3 Pie Chart正常工作。

据我所知,唯一的方法是编辑 pieChart.js 。从here拉出NVD3来源,然后在 / src / models / 下打开 pieChart.js 并添加编辑:

tooltip = function(key, y, e, graph) {
        return '<h3>' + key + '</h3>' +
               '<p>' +  y + ' % </p>'
      }

或者这是指向pieChart.js的NVD3托管链接,编辑 line 19 ,看起来像 '<p>' + y + '</p>'

确保在html页面中添加脚本,以便在加载nvd3.js时继承tanCides设置 <script src="your/path/to/pieChart.js" type="application/javascript"></script>

<强>更新

您知道,传递到图表中的数据将按原样呈现,您将进行百分比计算并将其传递到图表中。饼图切片大小将根据您发送到图表中的数据计算。只是让你知道,不管你是否已经知道它。

更新日期:2013年7月30日

我偶然发现了编辑工具提示的正确方法,而没有修改pieChart.js文件。

var chart = nv.models.pieChart().x(function(d) {
    return d.key;
}).y(function(d) {
    return d.daily[0].sales;
}).showLabels(true).values(function(d) {
    return d;
}).color(d3.scale.aColors().range()).donut(true).tooltips(true).tooltip(function(key, x, y, e, graph) {
    return '<h3>' + key + ' Custom Text Here ' + x + '</h3> here' + '<p> or here ,' + y + '</p>'
});

只是想让你更新答案。所以现在你知道两种方法。

希望它对你有所帮助。