我有一个Chart.js条形图,其中显示了两组数据:总SQL查询和慢速SQL查询。我有Y轴标签的每一个相应的数据集。图形可以看到如下:
当我将其中一组数据切换为不显示时,对应的Y轴标签仍会显示。在解释图形时,这有点令人困惑。如下图所示:
**我的问题:**如何隐藏当前未显示的任何数据集的Y轴标签?
以下是我目前设置图表的方式:
<canvas id="SQLPerformanceChart" minHeight="400"></canvas>
<script type="text/javascript">
...
var data = {
labels: labelArray,
datasets: [{
label: "Total SQL Queries",
fill: false,
borderWidth: 1,
borderColor: "green",
backgroundColor: "rgba(0, 255, 0, 0.3)",
yAxisID: "y-axis-0",
data: totalQueriesArray
}, {
label: "Slow SQL Queries",
fill: false,
borderWidth: 1,
borderColor: "orange",
backgroundColor: "rgba(255, 255, 0, 0.3)",
yAxisID: "y-axis-1",
data: slowQueriesArray,
}]
};
var options = {
animation: false,
scales: {
yAxes: [{
position: "left",
ticks: {
beginAtZero: true
},
scaleLabel: {
display: true,
labelString: 'Total SQL Queries'
},
id: "y-axis-0"
}, {
position: "right",
ticks: {
beginAtZero: true
},
scaleLabel: {
display: true,
labelString: 'Slow SQL Queries'
},
id: "y-axis-1"
}]
},
tooltips: {
enabled: true,
mode: 'single',
callbacks: {
title: function(tooltipItem, data) {
return data.label;
},
beforeLabel: function(tooltipItem, data) {
if (tooltipItem.index == 24) {
return data.labels[tooltipItem.index] + " - Now";
} else {
return data.labels[tooltipItem.index] + " - " + data.labels[(tooltipItem.index) + 1];
}
}
}
}
}
var ctx = document.getElementById("SQLPerformanceChart");
var SQLPerformanceChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
</script>
4条答案
按热度按时间gblwokeq1#
您可以将回调函数添加到图例onClick:
kuarbcqp2#
此解决方案适用于使用angular-chartjs,以及将此行为应用于所有显示的图表的情况。
如果要跳到代码,请选中此fiddlejs。
您也可以选中其他fiddlejs,以检查默认Angular 图表行为。
循序渐进:
我在angular-chart.js中使用了第一个图表示例,因此这将是单击后的最终结果:
1.替换全局图表的处理程序:
1.创建一个全局变量
charts
,这样我们就可以访问画布ID为的每个图表:1.使用
chart-create
事件填充图表变量:我希望会有一个更好的方法从画布id获得图表,但据我所知这是suggested way by the developers。
uurv41yg3#
如果您将ng2图表与chart.js和Angular 7^一起使用,并且希望将此行为应用于所有显示的图表,则此解决方案适用。
或用于本地配置
gcmastyq4#
我在使用v3.8.0时沿着这个问题,上面的任何一个都不适合我。这段代码适合我。注意,我将所有图表示例存储在一个Map中,因为我在同一页上有多个图表。
当我创造incances时,我把它们放在那里。
现在,隐藏Y轴标签和图例上的数据单击: