我想要实现一个像渐变的弧,表示5级(见图).我的数据只有一个1-5之间的整数值.现在可以忽略中间的图标.有没有可能在d3中实现这样的东西?我找不到任何例子.此外,我尝试了一个切断馅饼(甜甜圈)图表方法,但我不能使增长的弧…我会感谢任何帮助!感谢那.

解决方法

您可以使用d3,而不依赖于外部图像,SVG精灵或DOM中的任何内容 – 只是d3.js.

这是一个working fiddle.实现如下.
而且,这是一个more advanced小提琴,动画剪辑路径在不断增长的弧线.查看its predecessor看看面膜看起来没有剪裁.

首先,您需要将图形表示为与d3绑定的数据数组.具体来说,您需要一个颜色和“line”命令(您分配给d的字符串,如< path d =“...”>>这样的东西:

var segmentData = [
    { color:"#ED6000",cmd:"M42.6,115.3c5.2,1.5,11,2.4,16.8,2.4c1.1,2.7,3.7-0.1v-2.2c-7,0-13.1-1.3-18.8-3.6L42.6,115.3z" },{ color:"#EF7D00",cmd:"M25.7,99.3c4.3,4.7,9.5,8.6,15.3,11.3l-1.4,3.8c-6.9-2.4-13.2-6.1-18.6-10.8L25.7,99.3z" },{ color:"#F4A300",cmd:"M23.7,97c-5.2-6.4-8.8-14-10.3-22.4L2.9,75.7c2.9,10,8.5,18.9,15.8,25.9L23.7,97z" },{ color:"#F7BC00",cmd:"M13,71.5c-0.2-2-0.4-4-0.4-6c0-10.7,3.4-20.6,9.2-28.8L9.4,28.3c-5.6,9-8.9,19.6-8.9,30.9  c0,4.6,0.6,9.1,1.6,13.5L13,71.5z" },{ color:"#FFCF36",cmd:"M63,15.7V0.8c-1-0.1-2.5-0.1-3.7-0.1c-19.9,0-37.5,9.9-48.1,25l12.7,8.6C33.1,23,46,15.7,63,15.7z" }
];

那么你需要一个空的< svg>并且可能是< g>在其中,绘制图形:

var svg = d3.select("body").append("svg")
    .attr("width",125)
    .attr("height",125);

var gauge = svg.append("g");

然后使用d3绑定创建段:

var segments = gauge.selectAll(".segment")
    .data(segmentData);
segments.enter()
    .append("path")
    .attr("fill",function(d) { return d.color; })
    .attr("d",function(d) { return d.cmd; });

这只是创建图形,但不会基于整数值进行颜色化.为此,您可以定义更新功能:

function update(value) {
    segments
        .transition()
        .attr("fill",function(d,i) {
            return i < value ? d.color : "#ccc";
        })
}

呼叫更新(4)将使除最后一个段之外的所有内容变色.调用更新(0)颜色无(留下所有的灰色).

在小提琴中,还有一个tick()函数,它在setTimeout的基础上调用了一个新的值,但这仅仅是为了演示.

最后,如果你愿意,你可以包装所有的代码,并通过遵循[本文]的建议创建一个可重用的组件(http://bost.ocks.org/mike/chart/)

javascript – D3:具有增长弧度的计量表的更多相关文章

  1. 解决Java执行Cmd命令出现的死锁问题

    这篇文章主要介绍了关于Java执行Cmd命令出现的死锁问题解决,解决方法就是在waitfor()方法之前读出窗口的标准输出、输出、错误缓冲区中的内容,本文给大家介绍的非常详细,需要的朋友可以参考下

  2. cmd – 如何记录Windows XP命令行应用程序中显示的文本

    是否有一种简单的方法来记录Windows上命令行中出现的所有内容?

  3. windows – 如何从tar文件加载docker镜像

    我已经安装了DockerforWindows.我被赋予了在Windows中我不知道的HortonWorksDocker码头工作的任务.我从这里(http://hortonworks.com/downloads/#sandbox)下载了HDP_2.5_docker.tar,即10GB文件.如何加载图像tar文件.我在cmd提示符中尝试了这些命令:E:\>dockerimportHDP_2.5_doc

  4. windows – 如何通过START命令运行多个命令

    我有一个案例,我需要生成多个CMD实例,每个实例需要按顺序运行一些命令.这些命令由批处理脚本生成,因此它们不会提前知道.基本上,我想要做的是类似下面的内容,但我不知道正确的语法:START显然,这些括号是不正确的语法.所以当我尝试运行一些语法正确的变体时:STARTprogram_a&&program_b&&program_c我最终只生成了一个CMD实例,运行了program_a,并且“拥有”批处理脚本继续自己执行program_b和program_c.我想,你需要这样的东西:

  5. 不能获得符号链接工作(Windows 7)cmd

    我试图创建一个象征性的硬链接,以便我可以将chrome的缓存移动到另一个硬盘驱动器,我一直在试图让它工作,但我尝试的每一个变化已经从我的语法错误的命令行回来了.从这个错误的观点来看,这是一个正常的引号.无论如何,这是我所以有什么有什么想法为什么它返回的“命令的语法是不正确的”谢谢使用直接引号(“)而不是智能引号.

  6. windows – 如何告诉FORFILES在路径上执行命令?

    我在以下WindowsServer2k3批处理命令中遗漏了一些关于转义字符串或空格的内容(显而易见?

  7. windows – 在CMD批处理文件中,我可以确定它是否是从powershell运行的吗?

    我有一个Windows批处理文件,其目的是设置一些环境变量,例如用户可以在完成需要环境变量的工作之前运行它,例如:这大致相当于VisualStudio安装的“Developer命令提示符”快捷方式,它设置了运行VS实用程序所需的环境变量.但是,如果用户碰巧打开了Powershell提示符,则环境变量当然不会传播回Powershell:对于在CMD和PowerShell之间切换的用户而言,这可能会造成混淆.有没有办法可以在我的批处理文件MyFile.cmd中检测到它是从PowerShell调用的,所以我可以

  8. windows – 如何打开新的cmd窗口并在其中执行for循环?

    我有一个带有以下命令的test.cmd文件:第一个命令工作正常,表明一般方法应该有效.带有for循环的第二个给了我麻烦.当我直接在CMD窗口中运行此命令时,它会在循环中按预期在新的CMD窗口中启动我的python脚本“test.py”3次.当我从test.cmd运行相同的命令时,新的CMD窗口会弹出并立即消失.我没有收到任何错误消息,也无法保留新窗口.我怀疑我需要做更多的编码,但我无法弄清楚正确的语法.从test.cmd运行这个for循环,我必须做些什么改变?

  9. windows – 使用记事本从cmd dir输出打开多个文件

    我想做的事:使用dir命令查找一堆文本文件,然后在记事本中打开它们.优选地,在单个命令中不创建额外文件.通常,你可以说但我需要在复杂的目录结构中打开许多文件.我觉得我应该能够做到这样的事情:这确实给了我想要的输出(递归地查找文件并吐出文件名),但每个都在它自己的行和记事本上没有打开它们,它只是打开并要求创建文件“notepad”–这是空的.即使使用额外的文件(不受欢迎,但不是更可取)也不起作用:要

  10. Ubuntu服务器的性能很慢

    您实际上正在使用将磁盘暴露给Linux内核的物理存储控制器和软件RAID.您不能排除存储控制器支持不佳的可能性.使用hdparm-t/dev/sd{a,f}的输出来诊断问题.由于您在/dev/sda上看到一些过度缓慢,我怀疑磁盘故障或控制器故障.仔细检查您的存储控制器是否得到良好支持,并尝试尽快更换/dev/sda.

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部