我正在尝试通过Chartjs.Horizontal更薄来生成条形图。
我尝试更改calculateBarWidth
以返回传入的选项对象中的值。
当这不起作用时,我尝试硬编码一个值以返回calculateBarWidth
(下面的代码)。但是,这也不起作用。
在解决这个问题时,我还有其他途径可以探讨吗?
Chart.Type.extend({
name: "HorizontalBar",
defaults : defaultConfig,
initialize: function(data){
//Expose options as a scope variable here so we can access it in the ScaleClass
var options = this.options;
this.ScaleClass = Chart.Scale.extend({
offsetGridLines : true,
calculateBarX : function(datasetCount, datasetIndex, barIndex){
var xWidth = this.calculateBaseWidth(),
xAbsolute = this.calculateX(barIndex) - (xWidth/2),
barWidth = this.calculateBarWidth(datasetCount);
return xAbsolute + (barWidth * datasetIndex) + (datasetIndex * options.barDatasetSpacing) + barWidth/2;
},
calculateBaseWidth : function(){
return (this.calculateX(1) - this.calculateX(0)) - (2*options.barValueSpacing);
},
calculateBarWidth : function(datasetCount){
return 10;
},
// rest of code
答案 0 :(得分:2)
只需覆盖buildScale
方法,即可在缩放对象创建后将其弄乱。
预览强>
<强>脚本强>
Chart.types.HorizontalBar.extend({
name: "HorizontalBarAlt",
initialize: function(data){
var originalBuildScale = this.buildScale;
var chart = this;
chart.buildScale = function() {
var r = originalBuildScale.apply(this, arguments);
chart.scale.calculateBarHeight = function() {
return 10;
}
return r;
}
Chart.types.HorizontalBar.prototype.initialize .apply(this, arguments);
}
});
答案 1 :(得分:1)
您可以在选项对象中设置它。
var options =
{
scales:
{
yAxes: [
{
barPercentage: 0.3
}]
}
}