1. <tfoot id='y72q0'></tfoot>

      <bdo id='y72q0'></bdo><ul id='y72q0'></ul>
  2. <legend id='y72q0'><style id='y72q0'><dir id='y72q0'><q id='y72q0'></q></dir></style></legend>
    <i id='y72q0'><tr id='y72q0'><dt id='y72q0'><q id='y72q0'><span id='y72q0'><b id='y72q0'><form id='y72q0'><ins id='y72q0'></ins><ul id='y72q0'></ul><sub id='y72q0'></sub></form><legend id='y72q0'></legend><bdo id='y72q0'><pre id='y72q0'><center id='y72q0'></center></pre></bdo></b><th id='y72q0'></th></span></q></dt></tr></i><div id='y72q0'><tfoot id='y72q0'></tfoot><dl id='y72q0'><fieldset id='y72q0'></fieldset></dl></div>
  3. <small id='y72q0'></small><noframes id='y72q0'>

      如何在chartjs中悬停时呈现垂直线

      How to render a vertical line on hover in chartjs(如何在chartjs中悬停时呈现垂直线)
      • <bdo id='agqsP'></bdo><ul id='agqsP'></ul>

        <small id='agqsP'></small><noframes id='agqsP'>

            <tfoot id='agqsP'></tfoot>

                <legend id='agqsP'><style id='agqsP'><dir id='agqsP'><q id='agqsP'></q></dir></style></legend>
                  <tbody id='agqsP'></tbody>
              1. <i id='agqsP'><tr id='agqsP'><dt id='agqsP'><q id='agqsP'><span id='agqsP'><b id='agqsP'><form id='agqsP'><ins id='agqsP'></ins><ul id='agqsP'></ul><sub id='agqsP'></sub></form><legend id='agqsP'></legend><bdo id='agqsP'><pre id='agqsP'><center id='agqsP'></center></pre></bdo></b><th id='agqsP'></th></span></q></dt></tr></i><div id='agqsP'><tfoot id='agqsP'></tfoot><dl id='agqsP'><fieldset id='agqsP'></fieldset></dl></div>
                本文介绍了如何在chartjs中悬停时呈现垂直线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                当我将鼠标悬停在 chartjs v2 的绘图区域上时,我试图渲染一条垂直线.我有一个基本的工作版本,但我还没有弄清楚每次画线时如何删除线(旧线只是保留).

                I'm trying to render a vertical line when hovering over the plot area in chartjs v2. I have a basic working version of it but I haven't figured out how to remove the line each time the line is drawn (the old lines just stick around).

                这是一个工作示例 - https://jsfiddle.net/s9gyynxp/5/

                Here is a working example - https://jsfiddle.net/s9gyynxp/5/

                var ctx = document.getElementById("myChart");
                var myChart = new Chart(ctx, {
                    type: 'line',
                    data: {
                        labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
                        datasets: [{
                            label: '# of Votes',
                            data: [12, 19, 3, 5, 2, 3]
                        }]
                    }
                });
                
                // Hook into main event handler
                var parentEventHandler = Chart.Controller.prototype.eventHandler;
                Chart.Controller.prototype.eventHandler = function() {
                    var ret = parentEventHandler.apply(this, arguments);
                
                    // Draw the vertical line here
                    var eventPosition = Chart.helpers.getRelativePosition(arguments[0], this.chart);
                    this.chart.ctx.beginPath();
                    this.chart.ctx.moveTo(eventPosition.x, 30);
                    this.chart.ctx.strokeStyle = "#ff0000";
                    this.chart.ctx.lineTo(eventPosition.x, 340);
                    this.chart.ctx.stroke();
                
                    return ret;
                };
                

                注意我已经看到了其他解决方案,其中在图表画布顶部使用了第二个画布层 - 我认为这不是我的选择,因为我需要垂直线出现在图表顶部,但在我将实施的自定义工具提示下方.

                Note I have seen other solutions to this where a second canvas layer is used on top of the chart canvas - I don't think that is an option for me as I need the vertical line to appear on top of the chart, but below a custom tooltip I will be implementing.

                任何建议都非常感谢,谢谢!

                Any suggestions are appreciated, thanks!

                推荐答案

                在画线之前添加以下几行

                Just add the following lines before you draw your line

                ...
                this.clear();
                this.draw();
                ...
                

                顺便说一句,你的线不会一直延伸到底部.如果您想让它一直向下延伸,请使用 0this.chart.height 作为 yStart 和 yEnd.或者您可以使用 y 轴比例来计算比例的最大和最小像素(请参阅 https://jsfiddle.net/ombaww9t/).

                By the way, your line doesn't stretch all the way to the bottom. If you want to make it stretch all the way down use 0 and this.chart.height for your yStart and yEnd. Or you can use the y axis scale to calculate the max and min pixels for the scale (see https://jsfiddle.net/ombaww9t/).

                小提琴 - https://jsfiddle.net/56s9av1j/

                这篇关于如何在chartjs中悬停时呈现垂直线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                ChartJS Version 3 - common legend for multiple line charts(ChartJS 版本 3 - 多个折线图的常用图例)
                Charts.js scales yaxes ticks min max doesnt work(Charts.js 缩放 yaxes 刻度 min max 不起作用)
                How to expand the slice of donut chart in chartjs?(如何在chartjs中扩展圆环图的切片?)
                Chart.js yAxes Ticks stepSize not working (fiddle)(Chart.js yAxes Ticks stepSize 不起作用(小提琴))
                Rounded corners on chartJS v.2 - bar charts (with negative values)(chartJS v.2 上的圆角 - 条形图(带负值))
                How to hide value in Chart JS bar(如何在 Chart JS 栏中隐藏值)
                  <bdo id='H7vSB'></bdo><ul id='H7vSB'></ul>

                    <small id='H7vSB'></small><noframes id='H7vSB'>

                    <tfoot id='H7vSB'></tfoot>
                    <legend id='H7vSB'><style id='H7vSB'><dir id='H7vSB'><q id='H7vSB'></q></dir></style></legend>

                        1. <i id='H7vSB'><tr id='H7vSB'><dt id='H7vSB'><q id='H7vSB'><span id='H7vSB'><b id='H7vSB'><form id='H7vSB'><ins id='H7vSB'></ins><ul id='H7vSB'></ul><sub id='H7vSB'></sub></form><legend id='H7vSB'></legend><bdo id='H7vSB'><pre id='H7vSB'><center id='H7vSB'></center></pre></bdo></b><th id='H7vSB'></th></span></q></dt></tr></i><div id='H7vSB'><tfoot id='H7vSB'></tfoot><dl id='H7vSB'><fieldset id='H7vSB'></fieldset></dl></div>
                            <tbody id='H7vSB'></tbody>