Javascript 在Chart.js中定义浮动水平条形图的y起点?

Javascript 在Chart.js中定义浮动水平条形图的y起点?,javascript,charts,chart.js,Javascript,Charts,Chart.js,我创建了一个带有对数x轴的水平条形图: var ctx = document.getElementById("myChart"); var myChart = new Chart(ctx, { type: 'horizontalBar', data: { labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"], datasets: [{ label: '#

我创建了一个带有对数x轴的水平条形图:

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
    type: 'horizontalBar',
    data: {
        labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
        datasets: [{
            label: '# of Votes',
            data: [1000000000, 100000000, 10000000, 1000000, 100000, 1000],
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255,99,132,1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
                                xAxes: [{
                        type: 'logarithmic',
                        position: 'bottom',
                        ticks: {
                            userCallback: function(tick) {
                                var remain = tick / (Math.pow(10, Math.floor(Chart.helpers.log10(tick))));
                                if (remain === 1 || remain === 5) {
                                    var test = tick.toString();
                                        if(test >= 1000 && test < 1000000){
                                            return tick/1000 + "kHz";
                                        }else if(test >= 1000000 && test < 1000000000){
                                            return tick/1000000 + "MHz";
                                        }else if(test >= 1000000000){
                                            return tick/1000000000 + "GHz";
                                        }else {
                                            return tick.toString() + "Hz";
                                        }



                                }
                                return '';
                            },
                        },
                        scaleLabel: {
                            labelString: 'Frequency',
                            display: true,
                        }
                    }]
                }
    }
});
var ctx=document.getElementById(“myChart”);
var myChart=新图表(ctx{
键入:“水平线”,
数据:{
标签:[“红色”、“蓝色”、“黄色”、“绿色”、“紫色”、“橙色”],
数据集:[{
标签:“#投票数”,
数据:[100000000、100000000、10000000、1000000、100000、1000],
背景颜色:[
"rgba(255,99,132,0.2)",,
“rgba(54162235,0.2)”,
"rgba(255,206,86,0.2)",,
“rgba(751921920.2)”,
“rgba(153102255,0.2)”,
‘rgba(255、159、64、0.2)’
],
边框颜色:[
"rgba(255,99132,1)",,
“rgba(54162235,1)”,
"rgba(255,206,86,1)",,
"rgba(751921921)",,
"rgba(153102255,1)",,
‘rgba(255、159、64、1)’
],
边框宽度:1
}]
},
选项:{
比例:{
xAxes:[{
类型:'对数',
位置:'底部',
滴答声:{
userCallback:函数(勾选){
var剩余=tick/(Math.pow(10,Math.floor(Chart.helpers.log10(tick)));
如果(保持==1 | |保持==5){
var test=tick.toString();
如果(测试>=1000&&test<1000000){
返回刻度/1000+“kHz”;
}否则如果(测试>=1000000&&test<100000000){
返回刻度/1000000+“MHz”;
}否则如果(测试>=100000000){
返回勾号/100000000+“GHz”;
}否则{
返回tick.toString()+“Hz”;
}
}
返回“”;
},
},
scaleLabel:{
标签字符串:“频率”,
显示:对,
}
}]
}
}
});
但我似乎无法定义起点,所有的条形图都起源于y-0

我想知道Charts.js是否有可能,如果有,怎么可能,因为我似乎无法在他们的文档或git中找到任何关于它的信息,谷歌也没有帮助


到目前为止,唯一的方法似乎是将条形图与不可见的图表堆叠在一起,作为x轴上的填充(如建议的那样),效果相当不错


正如评论中所建议的,可能还有多轴解决方案。

我似乎无法为您找到一个可能的解决方案,因为条形图获取的数据只是数组。如果这允许一个起点值,那么可能,但似乎不是这样。多轴条形图可能会对您有所帮助。我找到了一个似乎更简单的解决方法,但感谢您的建议,多轴也会起作用。我确实看到了“堆叠图表”选项,但我不确定您当时是否可以为每个条形图赋予不同的颜色。这就是我建议多轴选项的原因。