程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题?

开发过程中遇到同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题的问题如何解决?下面主要结合日常开发的经验,给出你关于同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题的解决方法建议,希望对你解决同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题有所启发或帮助;

我在同一个 HTML 页面上有两个 matplotlib 散点图(使用 mpld3.fig_to_HTML 渲染)。我正在尝试使用此 ClickInfo 插件使图表上的每个点都可点击(以打开另一个显示更多信息的窗口)。

为这些图表生成的 HTML 显示了不同的 ID,但是当点击每个点时,一个图表的 ID 会与另一个图表的 ID 混淆,从而将错误的信息传递到它打开的页面。关于如何使用 @H_631_5@mpld3.get_element(this.props.ID,this.fig); 限制元素搜索的信息不多。

如果我在同一页面上只有一个图表,这个插件就可以完美运行。

如果有一个解决方案使这个插件适用于这个用例,这将是一个很大的帮助。

class ClickInfo(plugins.PluginBasE):    
    JavaScript = """
    mpld3.register_plugin("clickinfo",ClickInfo);
    ClickInfo.prototype = Object.create(mpld3.Plugin.prototypE);
    ClickInfo.prototype.constructor = ClickInfo;
    ClickInfo.prototype.requiredProps = ["ID","urls"];
    function ClickInfo(fig,props){
        mpld3.Plugin.call(this,fig,props);
    };
    
    ClickInfo.prototype.draw = function(){
        var obj = mpld3.get_element(this.props.ID,this.fig);
        urls = this.propS.Urls;
        obj.elements().on("mousedown",function(d,i){window.open(urls[i],'_blank')});

    }
    """
    def __init__(self,points,urls):
        self.points = points
        self.urls  = urls
        if isinstance(points,matplotlib.lines.line2D):
            suffix = "pts"
        else:
            suffix = None
        print("+++",mpld3.utils.get_ID(points,suffiX))
        self.Dict_ = {"type": "clickinfo","ID": mpld3.utils.get_ID(points,suffix=suffix,prefix='el'),"urls":urls}

解决方法

刚刚发现我拥有的 mpld3 包版本 (0.5.2) 有一个 targets 参数,用于 PointHTMLTooltip 接受 url 列表,当点击打开时新窗口/选项卡上的 url 并且完美运行。无需使用 ClickInfo。

@H_631_5@mpld3.plugins.PointHTMLTooltip(self,points,labels=None,targets=None,hoffset=0,voffset=10,css=NonE)

大佬总结

以上是大佬教程为你收集整理的同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题全部内容,希望文章能够帮你解决同一 HTML 页面上多个 mpld3 图表上的 ClickInfo 插件问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。