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中悬停时呈现垂直线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

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

                相关文档推荐

                在开发JS过程中,会经常遇到两个小数相运算的情况,但是运算结果却与预期不同,调试一下发现计算结果竟然有那么长一串尾巴。如下图所示: 产生原因: JavaScript对小数运算会先转成二进制,运算完毕再转回十进制,过程中会有丢失,不过不是所有的小数间运算会
                问题描述: 在javascript中引用js代码,然后导致反斜杠丢失,发现字符串中的所有\信息丢失。比如在js中引用input type=text onkeyup=value=value.replace(/[^\d]/g,) ,结果导致正则表达式中的\丢失。 问题原因: 该字符串含有\,javascript对字符串进行了转
                Rails/Javascript: How to inject rails variables into (very) simple javascript(Rails/Javascript:如何将 rails 变量注入(非常)简单的 javascript)
                CoffeeScript always returns in anonymous function(CoffeeScript 总是以匿名函数返回)
                Ordinals in words javascript(javascript中的序数)
                getFullYear returns year before on first day of year(getFullYear 在一年的第一天返回前一年)
                  <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>