更改 Chart.js 工具提示插入符号位置
Change Chart.js tooltip caret position
我使用 Chart.js 2.5 创建了一个圆环图。我遇到的问题是工具提示。当我将鼠标悬停在图表上时,会显示一个工具提示,其中插入符号始终位于左侧或右侧,如下所示:
我想更改插入符号的位置,使其始终显示在底部。这可能吗?
这是我的图表代码
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: [
'rgb(153, 102, 255)',
'rgb(255, 205, 86)',
'rgb(54, 162, 235)'
],
}],
}
})
您可以将图表选项中的工具提示 yAlign
属性 设置为 bottom
以始终在底部显示工具提示's 插入符号位置...
options: {
tooltips: {
yAlign: 'bottom'
}
}
ᴅᴇᴍᴏ
var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: ['rgb(153, 102, 255)', 'rgb(255, 205, 86)', 'rgb(54, 162, 235)']
}]
},
options: {
responsive: false,
tooltips: {
yAlign: 'bottom'
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="chart" height="180"></canvas>
您可以将 yAlign
tooltips configuration 选项设置为 "bottom":
options: {
tooltips: {
yAlign: "bottom"
}
}
JSFiddle 演示:https://jsfiddle.net/tksr7bn9/
自定义工具提示的多种方式。这是 CodePen 的一个很好的例子。
https://codepen.io/mab213/pen/PZOXdE
customTooltips: function(tooltip) {
// Tooltip Element
var tooltipEl = $('#chartjs-tooltip');
// Hide if no tooltip
if (!tooltip) {
tooltipEl.css({
opacity: 1
});
return;
}
// Set caret Position
tooltipEl.removeClass('above below');
tooltipEl.addClass(tooltip.yAlign);
tooltipEl.addClass(tooltip.xAlign);
// Set Text
tooltipEl.html(tooltip.text);
// Find Y Location on page
var top;
if (tooltip.yAlign == 'above') {
top = tooltip.y - tooltip.caretHeight - tooltip.caretPadding;
} else {
top = tooltip.y + tooltip.caretHeight + tooltip.caretPadding;
}
// Display, position, and set styles for font
tooltipEl.css({
opacity: 1,
left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
top: tooltip.chart.canvas.offsetTop + top + 'px',
fontFamily: tooltip.fontFamily,
fontSize: tooltip.fontSize,
fontStyle: tooltip.fontStyle,
xOffset: tooltip.xOffset,
});
}
对于在 2021 年以后努力实现此功能的任何人,工具提示对齐选项适用于 脱字符 的位置。因此,如果您将 yAlign
设置为 'bottom'
,这意味着工具提示必须在顶部对齐(以便插入符号保持在底部)。所以它只是向后 - 如果您需要在底部呈现工具提示,请改为设置插入符号的 yAlign: 'top'
。
示例:
var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: ['rgb(153, 102, 255)', 'rgb(255, 205, 86)', 'rgb(54, 162, 235)']
}]
},
options: {
responsive: false,
tooltips: {
yAlign: 'top'
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="chart" height="180"></canvas>
我使用 Chart.js 2.5 创建了一个圆环图。我遇到的问题是工具提示。当我将鼠标悬停在图表上时,会显示一个工具提示,其中插入符号始终位于左侧或右侧,如下所示:
我想更改插入符号的位置,使其始终显示在底部。这可能吗?
这是我的图表代码
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: [
'rgb(153, 102, 255)',
'rgb(255, 205, 86)',
'rgb(54, 162, 235)'
],
}],
}
})
您可以将图表选项中的工具提示 yAlign
属性 设置为 bottom
以始终在底部显示工具提示's 插入符号位置...
options: {
tooltips: {
yAlign: 'bottom'
}
}
ᴅᴇᴍᴏ
var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: ['rgb(153, 102, 255)', 'rgb(255, 205, 86)', 'rgb(54, 162, 235)']
}]
},
options: {
responsive: false,
tooltips: {
yAlign: 'bottom'
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="chart" height="180"></canvas>
您可以将 yAlign
tooltips configuration 选项设置为 "bottom":
options: {
tooltips: {
yAlign: "bottom"
}
}
JSFiddle 演示:https://jsfiddle.net/tksr7bn9/
自定义工具提示的多种方式。这是 CodePen 的一个很好的例子。
https://codepen.io/mab213/pen/PZOXdE
customTooltips: function(tooltip) {
// Tooltip Element
var tooltipEl = $('#chartjs-tooltip');
// Hide if no tooltip
if (!tooltip) {
tooltipEl.css({
opacity: 1
});
return;
}
// Set caret Position
tooltipEl.removeClass('above below');
tooltipEl.addClass(tooltip.yAlign);
tooltipEl.addClass(tooltip.xAlign);
// Set Text
tooltipEl.html(tooltip.text);
// Find Y Location on page
var top;
if (tooltip.yAlign == 'above') {
top = tooltip.y - tooltip.caretHeight - tooltip.caretPadding;
} else {
top = tooltip.y + tooltip.caretHeight + tooltip.caretPadding;
}
// Display, position, and set styles for font
tooltipEl.css({
opacity: 1,
left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
top: tooltip.chart.canvas.offsetTop + top + 'px',
fontFamily: tooltip.fontFamily,
fontSize: tooltip.fontSize,
fontStyle: tooltip.fontStyle,
xOffset: tooltip.xOffset,
});
}
对于在 2021 年以后努力实现此功能的任何人,工具提示对齐选项适用于 脱字符 的位置。因此,如果您将 yAlign
设置为 'bottom'
,这意味着工具提示必须在顶部对齐(以便插入符号保持在底部)。所以它只是向后 - 如果您需要在底部呈现工具提示,请改为设置插入符号的 yAlign: 'top'
。
示例:
var ctx = document.getElementById("chart").getContext("2d");
var myChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels: ['Jan', 'Feb', 'Mar'],
datasets: [{
label: 'dataset',
data: [30, 50, 20],
backgroundColor: ['rgb(153, 102, 255)', 'rgb(255, 205, 86)', 'rgb(54, 162, 235)']
}]
},
options: {
responsive: false,
tooltips: {
yAlign: 'top'
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<canvas id="chart" height="180"></canvas>