D3は色をグラデーションにマージします

サニーシュB

私はd3で一連のパスをマージしようとしてきました。そのため、一方の色がもう一方の色に溶け込み、グラデーションを作成するために使用しようとしたグラデーションを形成しているように見えますが、常に一方向にあり、うまくいきません。

ここでフィドルhttps://jsfiddle.net/roug3/jnpe5v3p/

 var mapGroup = d3.select("svg");

 function renderARC() {

        var txData = {x: 200 , y : 200 , angle : 30};
        var etxD = {etxSN : "TX500"};

        if(d3.select(".arc"+etxD.etxSN).node()){
            return;
        }
        var arcLevel = 5;
        var arcSpan = 20;

        var arcAngle = 2.0944;
        var txAngle = txData.angle + 0;

        var startAngle = txAngle - (arcAngle / 2);
        var endAngle = txAngle + (arcAngle / 2);

        var x = txData.x;
        var y = txData.y;


        var cwidth = 20;

        var dataset = {};
        for(var i = 1;i<= arcLevel;i++){
            dataset[i] = [i];
        }
        var color = ["#ee4035","#f37736","#fdf498","#7bc043","#0392cf"]
        // var color = ["#009933" , "#33cc33" ,"#ff3300" , "#ffcc66" ,"#ff6699" ,"#4dffff"];

        var pie = d3.layout.pie()
            .sort(null)
            .startAngle(startAngle)
            .endAngle(endAngle);


        var arc = d3.svg.arc();

        var gs = mapGroup.append("g").classed("arc"+etxD.etxSN , true).classed("arcSegment" , true);
						console.log(gs);
            
            var ggs =  gs.selectAll("g").data(d3.values(dataset)).enter().append("g");
           var arcP = ggs.selectAll("path").data(function (d) {
                return pie(d);
            })
            .enter();

           arcP.append("path").
               attr("class" , function (d, i) {
                  return "arcID"+etxD.etxSN+i;
               })
            .attr("fill", function (d, i, j) {
                // var cspan = Math.floor(Math.random() * arcLevel);
                return color[ j ];
            })
            .attr("d", function (d, i, j) {
                 return arc.innerRadius(cwidth * j + arcSpan).outerRadius(cwidth * (j + 1) + arcSpan)(d);
            }).
            attr("transform" , "translate("+x+","+y+")");
    }
    
    renderARC();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<svg width=500 height=500></svg>

助言がありますか

ありがとう

thatOneGuy

これは私がそれを得ることができる限り近いです:https//jsfiddle.net/thatoneguy/jnpe5v3p/2/

これらの助けを借りて:

基本的に、データセットを使用して放射状のぼかしを作成する必要があります。

  var grads = mapGroup.append("defs").selectAll("radialGradient").data(pie(d3.values(dataset)))
     .enter().append("radialGradient")
     .attr("gradientUnits", "userSpaceOnUse")
     .attr("cx", 0)
     .attr("cy", 0)
     .attr("r", function(d, i) {
       return cwidth * (i + 1) + arcSpan
     })
     .attr("id", function(d, i) {
       return "grad" + i;
     }).attr("transform", "translate(" + x + "," + y + ")");;

   grads.append("stop")
     .attr("offset", "80%")
     .style("stop-color", function(d, i) {return color[i];});
   grads.append("stop")
     .attr("offset", "100%")
     .style("stop-color", function(d, i) {
       if (color[i + 1]) {
         console.log(color[i + 1])
         return color[i + 1];
       } else {
         return color[i];
       }
     }) 

次に、これを選択してパスを埋めます。

 arcP.append("path").
   attr("class", function(d, i) {
       return "arcID" + etxD.etxSN + i;
     })
     .attr("fill", function(d, i) {
       console.log(count)
       count++;
       return "url(#grad" + count + ")";
     })
     .attr("d", function(d, i, j) {
       return arc.innerRadius(cwidth * j + arcSpan).outerRadius(cwidth * (j + 1) + arcSpan)(d);
     }).
   attr("transform", "translate(" + x + "," + y + ")");

 var mapGroup = d3.select("svg");

 function renderARC() {

   var txData = {
     x: 200,
     y: 200,
     angle: 30
   };
   var etxD = {
     etxSN: "TX500"
   };

   if (d3.select(".arc" + etxD.etxSN).node()) {
     return;
   }
   var arcLevel = 5;
   var arcSpan = 20;

   var arcAngle = 2.0944;
   var txAngle = txData.angle + 0;

   var startAngle = txAngle - (arcAngle / 2);
   var endAngle = txAngle + (arcAngle / 2);

   var x = txData.x;
   var y = txData.y;


   var cwidth = 20;

   var dataset = {};
   for (var i = 1; i <= arcLevel; i++) {
     dataset[i] = [i];
   }
   var color = ["#ee4035", "#f37736", "#fdf498", "#7bc043", "#0392cf"]
     // var color = ["#009933" , "#33cc33" ,"#ff3300" , "#ffcc66" ,"#ff6699" ,"#4dffff"];

   var pie = d3.layout.pie()
     .sort(null)
     .startAngle(startAngle)
     .endAngle(endAngle);


   var arc = d3.svg.arc();

   var gs = mapGroup.append("g").classed("arc" + etxD.etxSN, true).classed("arcSegment", true);
   console.log(gs);

   var ggs = gs.selectAll("g").data(d3.values(dataset)).enter().append("g");
   var arcP = ggs.selectAll("path").data(function(d) {
       return pie(d);
     })
     .enter();

   var grads = mapGroup.append("defs").selectAll("radialGradient").data(pie(d3.values(dataset)))
     .enter().append("radialGradient")
     .attr("gradientUnits", "userSpaceOnUse")
     .attr("cx", 0)
     .attr("cy", 0)
     .attr("r", function(d, i) {
       return cwidth * (i + 1) + arcSpan
     })
     .attr("id", function(d, i) {
       return "grad" + i;
     }).attr("transform", "translate(" + x + "," + y + ")");;

   grads.append("stop")
     .attr("offset", "80%")
     .style("stop-color", function(d, i) {return color[i];});
   grads.append("stop")
     .attr("offset", "100%")
     .style("stop-color", function(d, i) {
       if (color[i + 1]) {
         console.log(color[i + 1])
         return color[i + 1];
       } else {
         return color[i];
       }
     }) 

   var count = -1;

   arcP.append("path").
   attr("class", function(d, i) {
       return "arcID" + etxD.etxSN + i;
     })
     .attr("fill", function(d, i) {
       console.log(count)
       count++;
       return "url(#grad" + count + ")";
     })
     .attr("d", function(d, i, j) {
       return arc.innerRadius(cwidth * j + arcSpan).outerRadius(cwidth * (j + 1) + arcSpan)(d);
     }).
   attr("transform", "translate(" + x + "," + y + ")");






 }

 renderARC();
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
<svg width=500 height=500></svg>

それは完璧ではありませんが、あなたを正しい軌道に乗せるでしょう:)これが役立つことを願っています

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トランジションでsvgグラデーションを白一色に変更しますか?

分類Dev

TextInputLayoutは色をグラデーションに変更します

分類Dev

D3トランジション:グラデーション塗りつぶし内の色のフェードインとフェードアウト

分類Dev

線形グラデーションの背景は、特定のページに応じて色が変化します

分類Dev

D3棒グラフアニメーションを再起動します

分類Dev

グラデーションの停止で色を取得します

分類Dev

HTMLCanvasグラデーションは1色のみを表示します

分類Dev

TextFieldの下線の色をグラデーションに変更します

分類Dev

動的要素にグラデーションまたは単色を適用します

分類Dev

D3充填ゲージ-d3自体を介してファイリングサークルの色を動的に更新することは可能ですか?

分類Dev

D3はデータに基づいて色を更新します

分類Dev

データの追加の列に基づいて、d3サンキーダイアグラムのノードの色を変更します

分類Dev

Qualtrics 2014 3Dテーマ:ボタンのグラデーションを削除して色を変更する

分類Dev

D3ページの読み込み時にグラフをアニメーション化する

分類Dev

D3凡例の範囲からマップされた各カラーグラデーションに関連付けられた値を表示する

分類Dev

d3折れ線グラフの下の領域をグラデーションにするにはどうすればよいですか?

分類Dev

d3ヒートマップをバージョン3からバージョン5に変換中にエラーが発生しました

分類Dev

グラデーションを使用しますが、色を混合しません

分類Dev

gnuplotpm3dは2番目の列をカラーグラデーションとしてマップします

分類Dev

シェーディングされたインタラクティブな D3 ツリーマップ - 色盲の人をサポートしますか?

分類Dev

d3.jsを使用して棒グラフで色のグラデーションを設定する方法は?

分類Dev

d3でタイマー付きのトランジションを使用するにはどうすればよいですか?

分類Dev

Matplotlibチャートに色のグラデーションを追加しようとしています

分類Dev

CalendarViewウィジェットをカスタマイズしてイベントを表示し、色(グラデーションカラー)をカスタマイズすることはできますか?

分類Dev

円の上に放射状グラデーションを作成して、3D感を提供します

分類Dev

パネルを3色のグラデーションで塗りつぶします

分類Dev

3D RGBラベルイメージ(セマンティックセグメンテーション)を2Dグレーイメージに変換し、クラスインデックスを0から開始する方法

分類Dev

hcharts()バーを単色からグラデーションに変更します

分類Dev

円のグラデーションの色を変更しますか?

Related 関連記事

  1. 1

    トランジションでsvgグラデーションを白一色に変更しますか?

  2. 2

    TextInputLayoutは色をグラデーションに変更します

  3. 3

    D3トランジション:グラデーション塗りつぶし内の色のフェードインとフェードアウト

  4. 4

    線形グラデーションの背景は、特定のページに応じて色が変化します

  5. 5

    D3棒グラフアニメーションを再起動します

  6. 6

    グラデーションの停止で色を取得します

  7. 7

    HTMLCanvasグラデーションは1色のみを表示します

  8. 8

    TextFieldの下線の色をグラデーションに変更します

  9. 9

    動的要素にグラデーションまたは単色を適用します

  10. 10

    D3充填ゲージ-d3自体を介してファイリングサークルの色を動的に更新することは可能ですか?

  11. 11

    D3はデータに基づいて色を更新します

  12. 12

    データの追加の列に基づいて、d3サンキーダイアグラムのノードの色を変更します

  13. 13

    Qualtrics 2014 3Dテーマ:ボタンのグラデーションを削除して色を変更する

  14. 14

    D3ページの読み込み時にグラフをアニメーション化する

  15. 15

    D3凡例の範囲からマップされた各カラーグラデーションに関連付けられた値を表示する

  16. 16

    d3折れ線グラフの下の領域をグラデーションにするにはどうすればよいですか?

  17. 17

    d3ヒートマップをバージョン3からバージョン5に変換中にエラーが発生しました

  18. 18

    グラデーションを使用しますが、色を混合しません

  19. 19

    gnuplotpm3dは2番目の列をカラーグラデーションとしてマップします

  20. 20

    シェーディングされたインタラクティブな D3 ツリーマップ - 色盲の人をサポートしますか?

  21. 21

    d3.jsを使用して棒グラフで色のグラデーションを設定する方法は?

  22. 22

    d3でタイマー付きのトランジションを使用するにはどうすればよいですか?

  23. 23

    Matplotlibチャートに色のグラデーションを追加しようとしています

  24. 24

    CalendarViewウィジェットをカスタマイズしてイベントを表示し、色(グラデーションカラー)をカスタマイズすることはできますか?

  25. 25

    円の上に放射状グラデーションを作成して、3D感を提供します

  26. 26

    パネルを3色のグラデーションで塗りつぶします

  27. 27

    3D RGBラベルイメージ(セマンティックセグメンテーション)を2Dグレーイメージに変換し、クラスインデックスを0から開始する方法

  28. 28

    hcharts()バーを単色からグラデーションに変更します

  29. 29

    円のグラデーションの色を変更しますか?

ホットタグ

アーカイブ