2013-07-21 5 views
15

के साथ rect भरें मैं ग्राफ के लिए d3.js का उपयोग कर रहा हूँ। किसी बिंदु पर मुझे ग्राफ के कुछ विशेष भाग के साथ डेटा दिखाना है उदाहरण के लिए यदि मान कुछ सीमा पार करते हैं तो उस भाग को पैटर्न भरने के साथ दिखाएं। और अधिक स्पष्ट और छवि के लिए है।पैटर्न

मुझे सीमा पार करने वाले भाग भाग मिलते हैं लेकिन मैं इसे इस पैटर्न से कैसे भर सकता हूं? कोई सीएसएस या कैनवास चालें?

enter image description here

नोट: इस छवि को सिर्फ एक उदाहरण है नहीं असली

+0

[svg में सरल भरने पैटर्न: विकर्ण अंडे सेने] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/13069446/simple- भरने-पैटर्न-इन-एसवीजी-डायगोनल-हैचिंग) –

उत्तर

20

कैसे इस बारे में:

Live Demo

जे एस

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)'); 

परिणाम

enter image description here

+0

मैं रेक्ट को भरने के लिए पैटर्न का उपयोग करता हूं लेकिन यह पैटर्न इसे मूल रंग खो देता है, क्या हम दोनों रंग भरने और पारदर्शी पैटर्न दोनों को रख सकते हैं? –

+1

आपको आयतों को डुप्लिकेट करना होगा (रंग के साथ एक और पैटर्न के साथ एक) क्योंकि आपके पास एक ही आयत पर एक भरने का रंग और भरने वाला पैटर्न नहीं हो सकता है। आप पैटर्न को स्वयं संशोधित करने और इसके भीतर पृष्ठभूमि रंग बनाने में सक्षम हो सकते हैं, लेकिन यह मेरे ज्ञान से परे है। यहां तक ​​कि यदि आप कर सकते हैं, तो आपको प्रति रंग डुप्लीकेट पैटर्न की आवश्यकता होगी। –

1

को बदलने के लिए रंग आसान होगा, बस एक सशर्त if बयान। के रूप में आप पहली बार अपने एसवीजी को defs तत्व जोड़ने के लिए है और फिर इसे

//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); 
के लिए अपने प्रतिमान जोड़ने

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); });  

एक पैटर्न को जोड़ने के लिए एक छोटे से अधिक शामिल होगा: यहाँ एक उदाहरण मैं पहले इस्तेमाल किया गया है

+0

यहां मेरे पास यह स्थिति है कि यह तय करें कि कौन सा रेक्ट है और मैं उस आय को भरने के लिए पैटर्न का उपयोग करता हूं लेकिन इस पैटर्न ने इसका मूल रंग खो दिया है, क्या हम दोनों रंग भरने और पारदर्शी पैटर्न? –

+0

मैं रेक्ट को भरने के लिए पैटर्न का उपयोग करता हूं लेकिन यह पैटर्न इसे मूल रंग खो देता है, क्या हम दोनों रंग भरने और पारदर्शी पैटर्न दोनों को रख सकते हैं? –

संबंधित मुद्दे