首页 > 其他分享 >D3 环形菜单加文字标签

D3 环形菜单加文字标签

时间:2023-02-15 17:46:24浏览次数:50  
标签:style 菜单 angle attr 标签 text path D3 append

// 定义两条路径以使标签的方向正确
labelsVals.append('def')
  .append('path')
  .attr('id', 'label-path-1')
  .attr('d', `m0 ${-labelValRadius} a${labelValRadius} ${labelValRadius} 0 1,1 -0.01 0`);
labelsVals.append('def')
  .append('path')
  .attr('id', 'label-path-2')
  .attr('d', `m0 ${-labelValRadius1} a${labelValRadius1} ${labelValRadius1} 0 1,0 0.01 0`);

labelsVals.selectAll('text')
  .data(data)
  .enter()
  .append('text')
  .style('font-size', labelFontSize)
  .style('fill', 'black')
  .style('font-weight', "bold")
  .style('text-anchor', 'middle')
  .append('textPath')
  .attr('href', function (d, i) {
    const p = pieData[i];
    const angle = pieAngle[i];
    if (angle > 90 && angle <= 270) { // 根据角度选择路径
      return '#label-path-2';
    } else {
      return '#label-path-1';
    }
  })
  .attr('startOffset', function (d, i) {
    const p = pieData[i];
    const angle = pieAngle[i];
    let percent = (p.startAngle + p.endAngle) / 2 / 2 / Math.PI * 100;
    if (angle > 90 && angle <= 270) { // 分别计算每条路径的正确百分比
      return 100 - percent + "%";
    }
    return percent + "%";
  })
  .text("")
  .on('click', function (d) {
    if (d.type === 'link'){
        linkNode(currentD)
    }else if (d.type === 'showon'){
        showonNode(current, currentD)
    }else if (d.type === 'showoff'){
        showoffNode(currentD, highlightNodesId)
    }else if (d.type === 'highlight'){
        highlight(current, currentD)
    }
    d3.event.stopPropagation()
  }, true)
  

 

标签:style,菜单,angle,attr,标签,text,path,D3,append
From: https://www.cnblogs.com/carriexu/p/17124072.html

相关文章

  • tomcat server.xml标签功能详解
    1.具体说明  tomcat/conf/server.xml<!--属性说明port:指定一个端口,这个端口负责监听关闭Tomcat的请求shutdown:向以上端口发送的关闭服务器的命令字符串--><Serverport......
  • OpenFeign 4.0.1+SpringCloud3.0.x+Consul集群
    介绍OpenFeignopenFeign是工作在客户端可与其他注册发现管理服务器整合(eureka,zookeeper,consul,nacos等)功能上替代了restTemplate,本身集成Ribbon有负载均衡功能,在形式......
  • 多标签学习算法参考文献汇集笔记
    《多标签学习在智能推荐中的研究与应用》[1]朱峙成,刘佳玮,阎少宏.多标签学习在智能推荐中的研究与应用[J].计算机科学,2019,46(S2):189-193.摘要:  传统的智能......
  • 如何在 Pascal Voc 语义分割任务中为标签图建立灰度图索引
    上图是voc语义分割的图片,下图是来自陈洪翰大佬文章中的索引表。直接放代码:importosimportcv2importnumpyasnpfrommatplotlibimportpyplotaspltfromPIL......
  • a标签跳转下载 并且阻止新网页跳转
    利用a标签下载一、a标签下载文件<ahref="完整下载地址"></a>但是这样会有一个问题,就是下载是可以下载了,但是同样触发了a标签的页面跳转功能。<a:href="`${完整的下载......
  • 个人站点分类-标签-归档
    效果图:  前端代码:前端每个用户页面样式.CSS文件(标签文字颜色)及数据库外键注意点后端代码:  前后端代码对应:......
  • 禁用a标签点击事件
     a标签是没有disable属性的,如果想用disable禁用a标签的点击事件,也可以实现;1.a标签要用disable属性,必须和pointer-events属性一起使用,html代码:<aid="test">测试</a......
  • video标签使用controls属性怎么去掉三个点
    当video标签使用controls属性的时候。pc电脑会显示三个点,可以利用controlslist属性进行设置 1、nodownload:不要下载按钮2、nofullscreen:不要全屏按钮3、noremotepla......
  • jquery获得标签的值或元素的内容
       例如:.html()获取a标签中的i元素console.error($("a[name="+index+"]").html()); 设置a标签里的i标签元素,换样式$("a[name="+index+"]").html(......
  • 标签 样式
    样式一效果图:<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"c......