Javascript 下载时是否有办法使正确的切换图例显示?

Javascript 下载时是否有办法使正确的切换图例显示?,javascript,d3.js,bar-chart,legend,c3.js,Javascript,D3.js,Bar Chart,Legend,C3.js,我使用的是c3图表。我有一个使用canvg下载的按钮。我也有它切换栏时,图例点击。下载有效,切换也有效 下载中唯一的问题是,我可以始终显示图例(即使它们对应的条形图没有显示),或者只要切换图例,图例就不会再次出现在下载中(尽管它会出现在图表上) 我想要的是,只有当相应的条形图实际显示时,图例才会出现。我也不希望图例被隐藏,如果他们的酒吧正在显示。(显示的图例栏显示了一种关系) 我过去在IE上遇到过问题,所以在显示之后是“阻塞” var string = ".c3-legend-item-hidd

我使用的是c3图表。我有一个使用canvg下载的按钮。我也有它切换栏时,图例点击。下载有效,切换也有效

下载中唯一的问题是,我可以始终显示图例(即使它们对应的条形图没有显示),或者只要切换图例,图例就不会再次出现在下载中(尽管它会出现在图表上)

我想要的是,只有当相应的条形图实际显示时,图例才会出现。我也不希望图例被隐藏,如果他们的酒吧正在显示。(显示的图例栏显示了一种关系)

我过去在IE上遇到过问题,所以在显示之后是“阻塞”

var string = ".c3-legend-item-hidden";//hides legends that are unselected in the download. Will KEEP them hidden even if retoggled :( 

d3.selectAll(string).each(function() {
    var element = this;
    var computedStyle = getComputedStyle(element, null);
    for (var i = 0; i < computedStyle.length; i++) {
        var property = computedStyle.item(i);
        element.style[property] = computedStyle.getPropertyValue(property);
    }
});

//removing this section makes all legends appear permanently regardless of whether the bar does
var string=“.c3图例项隐藏”//隐藏下载中未选择的图例。即使重新跟踪,也会将它们隐藏起来:(
d3.选择全部(字符串)。每个(函数(){
var元素=这个;
var computedStyle=getComputedStyle(元素,null);
对于(var i=0;i
预期:

实际:

(带代码段)

(无代码段)


更新:澄清一下,这在将图形转换为下载的svg文件(添加xmlns等)时有效,但在使用canvg和下载到png文件(这是我需要它做的)时无效。

手动设置所需的样式,而不是使用计算样式

这个解决方案对我有效(“隐藏的”图例略微可见,但现在它与我的实际图表完全相同,这是我个人所需要的):


计算样式提供的样式比您需要的多得多,并且可以覆盖您想要的样式。

手动设置您需要的样式,而不是使用计算样式

这个解决方案对我有效(“隐藏的”图例略微可见,但现在它与我的实际图表完全相同,这是我个人所需要的):

计算样式提供的样式比您需要的多得多,并且可以覆盖您想要的样式

var string = ".c3-legend-item-hidden";

d3.selectAll(string).each(function() {
 //this.style['visibility']='hidden'; // uncomment this out and it will completely hide the legend if that is what you want
 this.style['opacity']= 0.15; 
 // set opacity as 0 to make the legend transparent to the point you can't see it (if that is what you want) 
 // or 0.15 to make it like the chart (as done here and in c3.css)
});