Javascript 在Chart.js中定义浮动水平条形图的y起点?
我创建了一个带有对数x轴的水平条形图: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: '#
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轴上的填充(如建议的那样),效果相当不错
正如评论中所建议的,可能还有多轴解决方案。我似乎无法为您找到一个可能的解决方案,因为条形图获取的数据只是数组。如果这允许一个起点值,那么可能,但似乎不是这样。多轴条形图可能会对您有所帮助。我找到了一个似乎更简单的解决方法,但感谢您的建议,多轴也会起作用。我确实看到了“堆叠图表”选项,但我不确定您当时是否可以为每个条形图赋予不同的颜色。这就是我建议多轴选项的原因。