use*_*957 5 javascript jquery chart.js
我正在使用Chartjs v.1.0.2,并尝试设置一个点,使其仅显示在图表上方。之后,应将其删除。我已经设法通过更改对象值来显示它,但是它不是流畅的运动,也不总是显示点。这也不会在悬停时将其隐藏。鼠标停留不动时如何流畅和隐藏?
window.onload = function(){
var ctx = $("#chart1").get(0).getContext("2d");
var chart1 = new Chart(ctx).Line(data1, options);
$("#chart1").hover(function(e) {
var activeBars = chart1.getPointsAtEvent(e);
activeBars[0].display = true;
// console.log(activeBars[0]);
chart1.update();
});
};
var data1 = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(95,186,88,0.7)",
strokeColor: "rgba(95,186,88,1)",
pointColor: "rgba(95,186,88,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [65, 59, 80, 81, 56, 55, 40]
}
]
};
var options = {
responsive: true,
bezierCurve : false,
scaleShowLabels: false,
scaleFontSize: 0,
pointDot : false,
scaleBeginAtZero: true,
scaleShowHorizontalLines: false,
scaleShowVerticalLines: true,
scaleGridLineColor : "rgba(232,232,232)",
showTooltips: true,
customTooltips: function (tooltip) {
var tooltipEl = $('#chartjs-tooltip');
if (!tooltip) {
tooltipEl.css({
opacity: 0
});
return;
}
tooltipEl.removeClass('above below');
tooltipEl.addClass(tooltip.yAlign);
// split out the label and value and make your own tooltip here
var parts = tooltip.text.split(":");
var innerHtml = '<span>' + parts[0].trim() + '</span> : <span><b>' + parts[1].trim() + '</b></span>';
tooltipEl.html(innerHtml);
tooltipEl.css({
opacity: 1,
left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
top: tooltip.chart.canvas.offsetTop + tooltip.y + 'px',
fontFamily: tooltip.fontFamily,
fontSize: tooltip.fontSize,
fontStyle: tooltip.fontStyle,
});
}
};
Run Code Online (Sandbox Code Playgroud)
简化的小提琴
小智 11
使用 Chart.js v2.6.0 测试
全局设置可以解决问题:
Chart.defaults.global.hover.intersect = false;
Run Code Online (Sandbox Code Playgroud)
或者直接在图表配置中:
options: {
hover: {
intersect: false;
}
}
Run Code Online (Sandbox Code Playgroud)
以及数据集的点设置。
例如
datasets: [{
label: 'My First dataset',
borderColor: 'rgb(255, 99, 132)',
backgroundColor: 'rgb(255, 99, 132)',
data: [10, 30, 46, 2, 8, 50, 0],
fill: false,
pointBorderColor: 'rgba(0, 0, 0, 0)',
pointBackgroundColor: 'rgba(0, 0, 0, 0)',
pointHoverBackgroundColor: 'rgb(255, 99, 132)',
pointHoverBorderColor: 'rgb(255, 99, 132)'}],...
Run Code Online (Sandbox Code Playgroud)
Chart.defaults.global.hover.intersect = false;
Run Code Online (Sandbox Code Playgroud)
options: {
hover: {
intersect: false;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:以下解决方案适用于 Chart.js v1.0.2(提出此解决方案时的最新版本)。请参考这个为 Chart.js v2.xx 提供解决方案的答案
不久前我遇到了类似的情况,并通过使默认点点“不可见”来解决这个问题,如下所示:
以上两个步骤使默认点点非常小,这与透明点描边相结合,使默认点点不可见。现在如果我们让pointDotStrokeWidth足够大,我们就可以达到想要的悬停效果。IE
[注意:通过使pointColor 透明可以实现相同的效果,但如果您要绘制多个数据集,则工具提示不会在数据值旁边显示相应的线条颜色。]
下面的示例(或者您可以查看此Fiddle:ChartJS - Show Points on Hover):
var data = {
labels: ["Point0", "Point1", "Point2", "Point3", "Point4"],
datasets: [
{
label: "My Chart",
fillColor: "rgba(87, 167, 134, 0.2)",
strokeColor: "rgba(87, 167, 134, 1)",
pointColor: "rgba(87, 167, 134, 1)",
pointStrokeColor: "rgba(255, 255, 255, 0)",
pointHighlightFill: "rgba(87, 167, 134, 0.7)",
pointHighlightStroke: "rgba(87, 167, 134, 1)",
data: [5, 39, 109, 19, 149]
}
]
};
var ctx = document.getElementById("my_chart").getContext("2d");
myChart = new Chart(ctx).Line(data, {
responsive : true,
bezierCurve: false,
datasetFill: true,
pointDotRadius: 1,
pointDotStrokeWidth: 8,
pointHitDetectionRadius: 20,
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>
<canvas id="my_chart"></canvas>Run Code Online (Sandbox Code Playgroud)
$("#chart1").mouseover(function(e) {
chart1.datasets[0].points[0].display = true;
chart1.update();
});
$("#chart1").mouseout(function(e) {
chart1.datasets[0].points[0].display = false;
chart1.update();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12286 次 |
| 最近记录: |