【问题标题】:D3 inserting a chart within the tooltipD3 在工具提示中插入图表
【发布时间】:2023-03-18 04:30:01
【问题描述】:

我正在尝试在工具提示中插入一个饼图(虽然不确定是否可能......)并最终得到以下代码:

    var tip = d3.tip()
    .attr('class', 'd3-tip')
    .offset([-10, 0])
    .html(
        function(d) { if (d.company == "A" || d.company == "B") {
           return "Company: <span style='color:#ccff33'>"  + d.company+ " </span>"; 
        }

            else {

            var data = [60,40];
            var r = 100;

            var color = d3.scale.ordinal()
                .range(["blue", "orangered"]);

            var base = d3.select(this)

            var svg = base.append("svg")
                .attr("width", 500)
                .attr("height", 500);

            var group = svg.append("g")
                .attr("transform", "translate(30, 30)");

            var arc = d3.svg.arc()
            .innerRadius(10)
            .outerRadius(r);

            var pie = d3.layout.pie()
                .value(function (d) { return d;});

            var arcs = group.selectAll(".arc")
                .data(pie(data))
                .enter()
                .append("g")
                .attr("class", "arc");

            arcs.append("path")
                .attr("d", arc)
                .attr("fill", function (d) { return color(d.data); })



            }
        }



  );

 baseSvg.call(tip);

文本的第一个代码可以正常工作,但是应该绘制饼图的 Else 部分没有返回任何内容,我已经挣扎了几天。我认为我的错误来自选择部分,但无法弄清楚。 我需要在工具提示中弹出饼图。

非常感谢您的帮助。

【问题讨论】:

    标签: javascript d3.js


    【解决方案1】:

    “但是应该绘制饼图的 Else 部分没有返回任何东西”

    这正是它失败的原因,该函数返回 null ,然后清除工具提示的 html 属性,覆盖您刚刚小心放置在提示中的内容。

    在代码末尾试试这个:

    return base.html();
    

    这就是您刚刚放入工具提示的所有内容都变成了一个 html 字符串,然后工具提示将复制现有的(和相同的)html。

    【讨论】:

    • 太棒了!谢谢。另一个问题,如果我可以的话,当鼠标按预期悬停时,工具提示会打开和关闭,但饼图正在堆积。就像第一次有 1 个图表,然后我第二次将鼠标悬停,有 2 个图表,然后是 3 个等等......
    • 每次呈现工具提示时,您都会添加新的 svg 和 g 元素。可能最简单的方法是在添加内容之前在 else 条件的开头将工具提示置空 --> base.html(null)
    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多