2012-08-27 5 views
5

यहां मेरा demo है (स्थायी लिंक; लोड करने में दूसरा लग सकता है)।d3.js और crossfilter डेटा का उपयोग कर हिस्टोग्राम कैसे बनाएं?

मैं इसके साथ कुछ समस्या आ रही है:

  1. crossfilter कुंजी ऊपरी सीमा को प्रतिबिंबित नहीं करता। इसलिए, एक्स-अक्ष में एक चरण गुम है।

    enter image description here

    मैं एक समूह-कदम आकार (group.all()[1] - group.all()[0]) हो रही है और उसके बाद d3.extent(group.all())[1] में जोड़कर इसे ठीक करने में कामयाब रहे। क्योंकि यह एक गंदे फिक्स है, मैंने इसे डेमो में शामिल नहीं किया है (डेटा अंतर से हो सकता है)। समूह-चरण आकार/एक्स-अक्ष को ठीक करने के लिए कम गंदा तरीका क्या है?

  2. बार के बीच असमान अंतर हैं। मैं अलग-अलग डेटा सेट के साथ x.scale असंगतता को ठीक करने का तरीका नहीं समझ सकता।

    enter image description here

    मैं बार-चौड़ाई उपलब्ध ग्राफ चौड़ाई के अनुसार स्वतः अनुकूल करने के लिए चाहते हैं। इसलिए, मैं इष्टतम बार चौड़ाई की गणना और फिर (यदि आवश्यक) ग्राफ में ही आकार परिवर्तन:

    bar_width = math.round(graph_width/data_length); 
    graph_width = bar_width*data_length; 
    

    इस शर्त के तहत, कोई रास्ता नहीं x.scale किसी भी कुंजी मूल्य के लिए असमान डेटा लौट सकते है, फिर भी यह होता है। कोई जादू नहीं है; मैं बस कुछ दिख रहा हूँ। लेकिन यह क्या हैं?

    जब x.scale तो x.scale सीमा निर्धारित करने से पहले graph_width से bar_width की कटौती गड़बड़ है समस्या का समाधान होता। हालांकि, मैं यह पता लगाने की शर्त नहीं लगा सकता कि x.scale अपेक्षित के रूप में कार्य नहीं कर रहा है।

उत्तर

2

मैंने ऐसा करने का सही तरीका जानने का प्रयास करने में काफी समय बिताया है। हालांकि, मैं ऊपरी डेटा सीमा का अनुमान लगाने के लिए सरल गणित का उपयोग कर समाप्त हुआ। ऐसी कई समस्याएं हैं जिन्हें हल किया जाना बाकी है, जैसे कि चरम सीमाओं को कैसे संभालना है।

enter image description here

एक पुन: प्रयोज्य हिस्टोग्राम पुस्तकालय विकसित करने के लिए मेरे प्रयास सुलभ on github है।

+0

यह बहुत अच्छा है! क्या यह सब डिफ़ॉल्ट रूप से हाइलाइट करने के लिए है? – by0

+0

लंबे समय तक इसे छुआ नहीं है। यदि आप गिटहब पर कोई समस्या/फीचर अनुरोध जमा करते हैं, तो मैं इसे देख लूंगा। – Gajus