在一个站点上有多个nvd3图的标签位置问题

问题描述 投票:0回答:1

我的网站上有两个nvd3图。

带有鼠标悬停的第一张图:

enter image description here

第一张图的代码:

 var chart = nv.models.multiBarChart()
              .reduceXTicks(true)   //If 'false', every single x-axis tick label will be rendered.
              .rotateLabels(0)      //Angle to rotate x-axis labels.
              .showControls(true)   //Allow user to switch between 'Grouped' and 'Stacked' mode.
              .groupSpacing(0.1)    //Distance between each group of bars.
            ;

            d3.select('#chartSumme svg').datum([{ key: 'Row1', values:
                    [{ x:'2019', y: 328500},{ x:'2020', y: 8236000},{ x:'2021', y: 3162500},{ x:'2022', y: 2814500},{ x:'2023', y: 13377000},{ x:'2024', y: 17098500}]
                    }, { key: 'row2', values:
                    [{ x:'2019', y: 335550}...and so on]}
                ]).transition().duration(500).call(chart);

带有鼠标悬停的第二个图形:

enter image description here

第二张图的代码:

 var chart = nv.models.multiBarChart()
              .reduceXTicks(true)   //If 'false', every single x-axis tick label will be rendered.
              .rotateLabels(0)      //Angle to rotate x-axis labels.
              .showControls(true)   //Allow user to switch between 'Grouped' and 'Stacked' mode.
              .groupSpacing(0.1)    //Distance between each group of bars.
            ;

            d3.select('#chart svg').datum([{ key: 'Row1', values:
                    [{ x:'2019', y: 0},{ x:'2020', y: 5000000},{ x:'2021', y: 0},{ x:'2022', y: 0},{ x:'2023', y: 0},{ x:'2024', y: 0}]
                    }, { key: 'row2', values:
                    [{ x:'2019', y: 2000}...and so on
                    },]).transition().duration(500).call(chart);

问题

您可以看到,鼠标悬停在第二张图上没有显示标签。首先,我认为我的代码中有错误,但后来我发现标签将位置移到了图形之外:

enter image description here

顶部是第一个图形,然后是文本(黑框),然后是第二个图形,并带有鼠标悬停。第二张图上的标签显示在第一张图上。如何解决此问题,以便每个标签都显示在他的图形中?

asp.net d3.js nvd3.js
1个回答
0
投票
似乎是一个错误,发现了此post and solution

742行添加+window.scrollY

var positionTooltip = function() { nv.dom.read(function() { var pos = position(), gravityOffset = calcGravityOffset(pos), left = pos.left + gravityOffset.left, top = pos.top + gravityOffset.top+window.scrollY;

© www.soinside.com 2019 - 2024. All rights reserved.