d3.js - 使用d3.js在饼图中的3D视图

时间:2013-07-08 15:41:06

标签: javascript d3.js

我一直在使用d3.js制作饼图。一切正常,但我陷入了3D动画。我需要像http://www.amcharts.com/javascript-charts/3d-pie/

这样的3D视图

请给我你的意见,甚至可以用d3.js来实现这个目标吗?

3 个答案:

答案 0 :(得分:1)

我对它有独特的答案。我将帮助你在没有任何第三方javascript的情况下制作3D 如果你使用过Adobe illustrator,你就会知道它有过滤器可以实现任何svg元素到3d

我利用该属性制作3D

<defs>
        <filter id="filters" >
        <feFlood flood-color="#CCCCCC" result="COLOR-red" /> 
        <feMorphology operator="dilate" radius="-3" in="SourceAlpha" result="STROKE_10" /> 
        <feConvolveMatrix order="10,10" divisor="1" kernelMatrix="
        0 0 0 0 0 0 0 0 0 0 
        0 0 0 0 0 0 0 0 0 0
        0 0 0 0 0 0 0 0 0 0
        0 0 0 0 0 0 0 0 0 0
        0 0 0 0 0 0 0 0 0 0
        0 0 1 1 0 0 0 0 0 0 
        0 0 1 1 1 1 0 0 0 0
        0 0 1 1 1 1 1 1 0 0
        0 0 1 1 1 1 1 1 1 0
        0 0 1 1 1 1 1 1 1 1" in="STROKE_10" result="BEVEL_20" />
        <feOffset dx="1" dy="1" in="BEVEL_0" result="BEVEL_25"/>   
        <feComposite operator="out" in="BEVEL_25" in2="STROKE_10" result="BEVEL_30"/>    
        <feComposite in="COLOR-red" in2="BEVEL_30" operator="in" result="BEVEL_40" />    
        <feMerge result="BEVEL_50">
        <feMergeNode in="BEVEL_40" />    
        <feMergeNode in="SourceGraphic" /> </feMerge>  
        </filter>
        </defs> 

将此代码嵌入到您的svg中,并将属性filter="url(#filters)"添加到您想要过滤的元素上 如果有像<g></g>这样的元素,只需添加<g class="whatever" filter="url(#filter)"></g> 你会得到3D效果。休息你需要使用代码来改变颜色和深度以及所有内容

答案 1 :(得分:0)

你可以使用谷歌图表以及它的3D图表 https://developers.google.com/chart/interactive/docs/gallery/piechart

答案 2 :(得分:-3)

我强烈建议您将Highcharts用于您正在寻找的那种饼图。我最近在我的一个应用程序中实现了..你可以在这里查看:

http://www.highcharts.com/demo/pie-basic