2013-07-08 221 views
1

我一直在使用d3.js製作餅圖。一切正常,但我卡在一個3D動畫。我需要就像http://www.amcharts.com/javascript-charts/3d-pie/d3.js - 餅圖中使用d3.js的3D視圖

3D視圖請給我你的意見,是它甚至有可能與d3.js實現這一目標?

+0

其可能的,但我認爲這將是更痛苦超過其價值的......你不得不手動繪製第二個圓給予據我所知,3d效果 – imrane

+0

是的,我已經嘗試過創建兩個圓圈,但它沒有給出完美的外觀,因爲切片的顏色重疊在某些末端並不合適。所以它不是我需要的完美外觀。 – user2339182

回答

1

我可以有獨特的答案。我會幫你做到這一點,沒有任何第三方javascript 如果你已經使用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效果。放心,你需要的代碼打改變顏色和深度,一切