2013-06-06 5 views
16

मेरे पास कई रेखाएं हैं और मुझे पता है कि किंवदंती में "डॉट" पर क्लिक करने से इसे छुपाया जाएगा/दिखाया जाएगा।एनवीडी 3 सरल रेखा चार्ट में डिफ़ॉल्ट रूप से कुछ धाराओं को कैसे अक्षम करें?

हालांकि, मुझे कुछ लाइनों को अक्षम होने और प्रदर्शित नहीं होने की आवश्यकता है, और उपयोगकर्ता को ग्राफ पर दिखाने के लिए पौराणिक कथाओं में डॉट पर क्लिक करना होगा।

(उदाहरण के लिए। मैं प्रति भाषा स्टैक ओवरफ्लो पर प्रश्नों की संख्या ग्राफ करता हूं, लेकिन सी, PHP और जावास्क्रिप्ट डिफ़ॉल्ट रूप से अक्षम है)। ग्राफ केवल पाइथन, रूबी दिखाता है ... लेकिन पौराणिक कथाओं पर, आपके पास इन 3 अक्षम होने के साथ सी, PHP और जेएस सहित सभी भाषाएं हैं।

मुझे डिफ़ॉल्ट डेटा/छुपा स्थिति सेट करने के लिए प्रत्येक डेटा सेरी के लिए कोई विधि/विशेषता नहीं मिली है। क्या मैं कुछ भूल रहा हूँ?

उत्तर

7

अपने डेटा श्रृंखला के प्रत्येक है कि आप विकलांग लिए, बस करो:

series.disabled=true 

nvd3 सब कुछ करना नहीं है, लेकिन अगर आप कोड का अवलोकन करने को तैयार हैं यह वास्तव में काफी लचीला है। मैं चार्ट मॉडल के कई के स्रोत में इस लाइन का पता लगाकर इस बात का पता:

state.disabled = data.map(function(d) { return !!d.disabled }); 
0

एनवीडी 3 इसके लिए पर्याप्त रूप से लचीला नहीं है - आप कुछ भी नहीं खो रहे हैं, आप ऐसा नहीं कर सकते (कम से कम बॉक्स से बाहर नहीं)। आपको इस कार्यक्षमता को स्वयं लागू करने की आवश्यकता होगी, या सादे पुराने डी 3 का उपयोग करना होगा।

+0

मैं मानता हूँ @Lars Kothoff – shabeer90

1

आप एक छिपे हुए चार्ट के साथ शुरू और कुछ इस तरह की कोशिश कर सकते:

// Array of series you want to hide 
var hidden = [0, 2]; 

// Dispatch click event to each element 
var e = document.createEvent('UIEvents'); 
e.initUIEvent('click', true, true); 
d3.select('.nv-legend') 
    .selectAll('.nv-series') 
    .filter(function(d, i){return hidden.indexOf(i) !== -1;}) 
    .node() 
    .dispatchEvent(e); 

एक बार यह खत्म, अपने चार्ट को सामने लाने और श्रृंखला अक्षम हो जाएगा।

14

आप बदल सकते हैं जो धाराओं chart.state() वस्तु का उपयोग करके विकलांग सक्षम होते हैं /। उदाहरण के लिए:

// Assuming your chart is called 'chart' 
var state = chart.state(); 

for(var i=0; i < state.disabled.length; i++) { 
    state.disabled[i] = ...LOGIC RETURNING TRUE OR FALSE...; 
} 

chart.dispatch.changeState(state); 
chart.update(); 
+0

साथ यह महान काम करता है। हालांकि एक सवाल - आप 'chart.update()' के लिए क्या कहते हैं? मेरे चार्ट के लिए कुछ हज़ार डेटा पॉइंट्स के साथ, यह अद्यतन कॉल करने के लिए मापने योग्य तेज़ है, और यह अभी भी ठीक काम करता प्रतीत होता है। –

+0

@EugeneBeresovsky हाँ, आप सही हैं। lineChart.js में, मैंने 'dispatch.on ('changeState'' की खोज की और पाया कि' chart.update();' पहले से ही कॉल किया गया है। इसे फिर से कॉल करने की आवश्यकता नहीं है। – Felix

20

इस जवाब को पढ़ने के बाद मैं अभी भी क्रम में कुछ और पढ़ने के लिए मुझे समझने के लिए एक धारा रेखांकन के लिए मेरे JSON डेटा-धारा से अक्षम सेट करने का तरीका था।

नीचे दिए गए उदाहरण क्या यह मेरे लिए हल है विकलांग: सच

{ 
    key: "something", 
    disabled: true, 
    values: [...] 
    } 
संबंधित मुद्दे