2012-07-26 16 views
8

इसलिए मुझे एक बहुत ही सरल डी 3 ट्यूटोरियल का पालन करते समय समस्या हो रही है।d3 संलग्न करें और समस्याएं दर्ज करें

var svg =d3.select("body").selectAll("svg"); 
var circle = svg.selectAll("circle"); 
var w=window.innerWidth; 
console.log(circle); 
circle.data([500,57,112,200,600,1000]); 


circle.enter().append("circle") 
    .attr("cy",function(d) { 
     return (d) 
     }) 
    .attr("cx", function(i){ 
     return (i*100) 
    }) 
    .attr("r", function(d) { 
     return Math.sqrt(d); 
     }) 

कौन सा यह की तरह लगता है 3 नए चक्र तत्वों जोड़ना होगा (क्योंकि मैं पहले से ही 3 है: मूलतः मैं वर्तमान svg चक्र तत्वों तो enter.append बुला लिए डेटा बाइंडिंग से एसवीजी चक्र तत्वों को जोड़ने के नीचे दिखाया गया है का प्रयास कर रहा हूँ बनाया था)। हालांकि, बजाय इन 3 नए वृत्त तत्व जोड़े होने का, मैं इस त्रुटि में चल रहा हूँ:

Uncaught TypeError: Object [object SVGCircleElement],[objectSVGCircleElement],[object SVGCircleElement] has no method 'enter'

मैं अनिवार्य रूप से किया है पैराग्राफ के साथ एक ही बात है, और यह ठीक काम करने के लिए लगता है:

var p =d3.select("body").selectAll("p") 
.data([4, 8, 15, 16, 23, 42]) 
.text(function(d) { return "I'm number " + d + "!"; }); 

//Enter  
p.enter().append("p") 
.text(function(d) { return "I'm number " + d + "!"; }) 
.style("color", function(d, i) { 
return i % 2 ? "#000" : "#eee"; 
}); 

हालांकि जैसे ही मैं इसमें एसवीजी तत्व जोड़ने की कोशिश करता हूं, मुझे भी वही त्रुटि मिलती है।

ऐसा लगता है कि केवल एक वाक्यविन्यास त्रुटि या कुछ होना चाहिए, लेकिन मैं 5 ट्रिलियन बार कोड से गुजर चुका हूं, और कुछ भी नहीं मिला।

किसी भी मदद की बहुत सराहना की जाती है, और आपके समय के लिए हाथ से पहले धन्यवाद।

इसहाक

उत्तर

14

आप circle.data बजाय circle खुद के परिणाम पर enter कॉल करना चाहते हैं।

var circle = svg.selectAll("circle"); 
circle.data([500,57,112,200,600,1000]).enter().append("circle"); 

आप p चर में data की वापसी भंडारण के द्वारा अपने p उदाहरण में सही ढंग से ऐसा किया। जबकि आपके circle उदाहरण में, आप अपने circle चर में d3.select.selectAll की वापसी को संग्रहीत कर रहे हैं।

+0

बहुत बहुत धन्यवाद! जो मेरी गलती से छुटकारा पाता है, और सही समझ में आता है। आपने मुझे श्री ओल्सन से पहले दो बार बचा लिया है! – Cabbibo

+0

@IsaacCohen कोई समस्या नहीं है। अगर इस प्रश्न के साथ कोई अन्य समस्या नहीं है तो कृपया उत्तर स्वीकार करें। –

+0

खेद है कि इतना समय लगा, इसे स्वीकार करने का प्रयास किया, लेकिन यह मुझे एक घंटे तक नहीं जाने देगा और फिर इसके बारे में भूल गया। मैं क्षमाप्रार्थी हूं! – Cabbibo

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