调整大小后:
调整大小之前:
这是我的代码。我想让图表的大小始终相同,但我不知道如何。
这是chart.js
范围设置,但我认为在这种情况下它们不正确。
考虑到轴范围设置的数量,了解它们如何相互作用非常重要。
suggestedMax和suggestedMin设置仅更改用于缩放轴的数据值。这些对于扩展轴的范围同时保持自动调整行为非常有用。
/*#######################################*/
var warnColor = 'rgba(255, 0, 0, 1)';
var careColor = 'rgba(255, 228, 0, 1)';
var protectColor = 'rgba(54, 162, 235, 1)';
Chart.pluginService.register({//PLUG IN
beforeUpdate: function(chartInstance) {
chartInstance.data.datasets.forEach(function(dataset) {
dataset.backgroundColor = dataset.data.map(function(data) {
if ( data >= 70) return warnColor;
else if ( data >= 50 && data < 70 ) return careColor;
else return protectColor;
})
})
}
});
Chart.defaults.global.defaultFontSize = 15;
var ctx = $('#myChart');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["CPU Usage", "Memory Usage", "Network Usage", "Disk Usage", "SysvIPC Count"],
datasets: [{
data: [10,20,30,40,50],
borderColor: [
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)',
'rgba(54, 162, 235, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
layout: {
padding: {
left: 0,
right: 0,
top: 40,
bottom: 0
}
},
onClick: barClickEvent,
legend: {
display: false
},
scales: {
yAxes: [{
ticks: {
min: 0,
max: 100,
beginAtZero:true
},
}]
},
tooltips: {
enabled: true
},
hover: {
animationDuration: 0
},
animation: {
duration: 1,
onComplete: function () {
var chartInstance = this.chart,
ctx = chartInstance.ctx;
ctx.font = Chart.helpers.fontString(17, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
ctx.textAlign = 'center';
ctx.textBaseline = 'bottom';
this.data.datasets.forEach(function (dataset, i) {
var meta = chartInstance.controller.getDatasetMeta(i);
meta.data.forEach(function (bar, index) {
var data = dataset.data[index];
ctx.fillStyle = "#000000";
if (index !== 4) {//qnum
data += '%';
}
ctx.fillText(data, bar._model.x, bar._model.y - 5);
});
});
}
}
}
});
function barClickEvent(event, array){
var activePoints = myChart.getElementsAtEvent(event);
switch (activePoints[0]._index) {
case 0: window.location = '/usage_cpu';
break;
case 1: window.location = '/usage_mem';
break;
case 2: window.location = '/usage_tcp';
break;
case 3: window.location = '/usage_disk';
break;
case 4: window.location = '/stat_ipcq';
break;
default: window.location = '/';
}
}
答案 0 :(得分:4)
旧问题,但这可能是因为您必须停用autoSkip
:
scales: {
xAxes: [{
stacked: false,
beginAtZero: true,
scaleLabel: {
labelString: 'Month'
},
ticks: {
autoSkip: false
}
}]
}
您可以在此处详细了解:http://www.chartjs.org/docs/latest/axes/cartesian/#tick-configuration
答案 1 :(得分:0)
我正在使用 xAxes:[{ticks:{autoSkip:false}}, {gridLines:{display:false}}] 而且它失败了,我一经删除gridLines xAxes:[{滴答声:{autoSkip:false}} // {gridLines:{display:false}}] 它开始起作用:这意味着还需要考虑财产组合。
答案 2 :(得分:0)
唯一可行的方法是在updateScaleDefaults
函数内部。
Chart.scaleService.updateScaleDefaults('category', {
gridLines: {
drawBorder: false,
drawOnChartArea: false,
drawTicks: false
},
ticks: {
// autoSkip: false,
padding: 20
},
maxBarThickness: 10
});
位于看起来像全局配置功能的内部,如果我在其中添加它,则会在全局范围内更改;如果我将设置添加到各个图表中,它将不起作用