Desen

2013-07-21 30 views
15

ile doldurun Grafik için d3.js kullanıyorum. Bir noktada, örneğin, bir sınırın ötesine geçiyorsa ve o bölümü dolum paterni ile gösteriyorsa, verileri özel grafik parçasıyla göstermek zorundayım. daha açık için orada ve görüntü var.Desen

Sınırı geçen rect parçasını alıyorum ama bu desenle nasıl doldurabilirim? herhangi bir css veya tuval hilesi?

enter image description here

Not: Bu resim sadece bir örnektir değil, renk basit olurdu sadece şartlı if deyimi değiştirmek için gerçek bir

+0

[svg'ait Basit dolgu deseni: diyagonal kuluçka] olası yinelenen (http://stackoverflow.com/questions/13069446/simple- dolgu-desen-in-svg-diyagonal-kuluçkalama) –

cevap

20

Şöyle yapsak:

Live Demo

JS

var svg = d3.select("body").append("svg"); 

svg 
    .append('defs') 
    .append('pattern') 
    .attr('id', 'diagonalHatch') 
    .attr('patternUnits', 'userSpaceOnUse') 
    .attr('width', 4) 
    .attr('height', 4) 
    .append('path') 
    .attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2') 
    .attr('stroke', '#000000') 
    .attr('stroke-width', 1); 

svg.append("rect") 
     .attr("x", 0) 
     .attr("width", 100) 
     .attr("height", 100) 
     .style("fill", 'yellow'); 

svg.append("rect") 
    .attr("x", 0) 
    .attr("width", 100) 
    .attr("height", 100) 
    .attr('fill', 'url(#diagonalHatch)'); 

Sonuçlar

enter image description here

+0

rect'i doldurmak için desen kullanıyorum ama bu desen, hem rengi hem de saydam deseni doldurabilmek için orijinal rengini kaybediyor mu? –

+1

Aynı dikdörtgende hem bir dolgu rengine hem de dolgu desenine sahip olamayacağınız için dikdörtgenleri (biri renkle ve diğeri desenle) kopyalamanız gerekir. Desenin kendisini değiştirebilir ve içinde bir arka plan rengi oluşturabilirsiniz, ancak bu benim bilgimin ötesinde. Olabilseniz bile, renk başına kopyalanan desene ihtiyacınız olacaktır. –

1

. öncelikle SVG defs eleman eklemek ve ardından bu

//first create you SVG or select it 
var svg = d3.select("#container").append("svg"); 

//then append the defs and the pattern 
svg.append("defs").append("pattern") 
    .attr("width", 5) 
    .attr("height", 5); 
için desen eklerken biraz daha fazla dahil olacak bir model eklemek için

svg.selectAll("dot")  
     .data(data)          
    .enter().append("circle")        
     .attr("r", 3.5)  
     .style("fill", function(d) {   // <== Add these 
      if (d.close >= 50) {return "red"} // <== Add these 
      else { return "black" }   // <== Add these 
     ;})          // <== Add these 
     .attr("cx", function(d) { return x(d.date); })  
     .attr("cy", function(d) { return y(d.close); });  

: Burada ben daha önce kullandım bir örnek

+0

Burada hangi rect ve bu rect doldurmak için desen kullanın, ama bu desen orijinal renk kaybetti hem de renk ve şeffaf dolgu gibi tutmak olabilir desen? –

+0

rect'i doldurmak için desen kullanıyorum ama bu desen, hem rengi hem de saydam deseni doldurabilen orijinal rengini kaybedebilir mi? –