D3.js 在c3仪表图表中显示大于100的百分比值

D3.js 在c3仪表图表中显示大于100的百分比值,d3.js,charts,data-visualization,c3.js,D3.js,Charts,Data Visualization,C3.js,我想用C3.js库显示当前进度的图表,如下所示。 但是C3.js中不支持径向进度 我试着用仪表图 但对于所有大于100%的值,它仅显示100%。 这是小提琴 }) 我有办法做到吗? 提前感谢。您可以使用generate方法中的gauge对象更改最大值: var chart1 = c3.generate({ bindto: '#test', data: { columns: [ ['data', 150] ], type: 'gauge'


我想用C3.js库显示当前进度的图表,如下所示。 但是C3.js中不支持径向进度 我试着用仪表图 但对于所有大于100%的值,它仅显示100%。 这是小提琴

})

我有办法做到吗?
提前感谢。

您可以使用generate方法中的gauge对象更改最大值:

var chart1 = c3.generate({
    bindto: '#test',
    data: {
        columns: [ ['data', 150] ],
        type: 'gauge'        
    }, 
    gauge: {
        max: 200
    }
})
我在这里更新了你的小提琴:

更改此项

   data: {
        columns: [ ['data', 150] ],
        type: 'gauge'
    }

添加此函数,但您必须取消对数据最小最大cos饼图的定义,仅附加在表示0-100的百分比上
var yScale=d3.scale.linear()
.domain([100500])//min-max您的数据
.range([0100])//此修复错误表示这是一个百分比,您必须定义数据最小值最大值并将其转换
console.log(yScale(150))

我相信你可以做你想做的事。我建议您首先在显示图表之前计算所需的最大百分比(使用您将要显示的数据进行此计算),然后使用该数字作为最大百分比。。。并设置标签功能

这是一把小提琴:

这是相关的代码。。。我确实将硬编码的max从fiddle改为一个函数,以反映我的第一个建议

var chart1 = c3.generate({
  bindto: '#test',
  data: {
    columns: [
      ['data', 150]
    ],
    type: 'gauge'
  },
  gauge: {
    label: {
      format: function(value, ratio) {
        return value; //returning here the value and not the ratio
      },
    },
    min: 0,
    max: calcMaxFromCurrentData(),
    units: '%' //this is only the text for the label
  }
})

我的答案是SO答案的修改版本:

谢谢您的评论,但对于销售目标、利润等实际数据,最大值可能会有所不同&在0-100范围内显示超过100%的数字是不可行的。我的意思是,必须有一些方法,甚至可以显示150%,就像我们可以做的那样,在径向进度。我不太确定你是否能够实现这一点,使用仪表图表。如果是200%,您希望显示什么?我想你可以展示两个环,你可能需要扩展c3来支持你正在寻找的东西,因为我认为它不会从盒子里出来。我会帮你看一看,如果超过100%,它应该有多个弧。如何扩展C3库?有相关的文档吗?他们的github在这里:您可以使用fork并进行支持多个环所需的更改,然后您可以执行pull请求,然后他们可以在下一个版本中包含您的更改,或者您可以为fork创建一个版本并使用它。您可以通过npm安装它,或者如果您正在引用c3的单个js文件,您可以构建修改后的版本,然后引用输出的文件。谢谢您提供的信息。我会调查的。
data: {
    columns: [ ['data', yScale(150)] ],
    type: 'gauge'
}
var chart1 = c3.generate({
  bindto: '#test',
  data: {
    columns: [
      ['data', 150]
    ],
    type: 'gauge'
  },
  gauge: {
    label: {
      format: function(value, ratio) {
        return value; //returning here the value and not the ratio
      },
    },
    min: 0,
    max: calcMaxFromCurrentData(),
    units: '%' //this is only the text for the label
  }
})