मैं D3.js का उपयोग कर रहा हूं और मुझे एकाधिक श्रृंखला वाले क्षेत्र चार्ट के लिए एक स्टैक्ड लेआउट सेट करने में समस्या हो रही है। मेरे पास मेरे डेटा की दो संभावित संरचनाएं हैं (यदि इससे मदद मिलती है)। एक स्क्रिप्ट को खिलाया कच्चे डेटा, इस संरचना में है:D3.js में स्टैक्ड एरिया
var data = [{key: 'Group1', value: 37, date: '04/23/12'},
{key: 'Group2', value: 12, date: '04/23/12'},
{key: 'Group3', value: 46, date: '04/23/12'},
{key: 'Group1', value: 32, date: '04/24/12'},
{key: 'Group2', value: 19, date: '04/24/12'},
{key: 'Group3', value: 42, date: '04/24/12'},
{key: 'Group1', value: 45, date: '04/25/12'},
{key: 'Group2', value: 16, date: '04/25/12'},
{key: 'Group3', value: 44, date: '04/25/12'},
{key: 'Group1', value: 24, date: '04/26/12'},
{key: 'Group2', value: 52, date: '04/26/12'},
{key: 'Group3', value: 64, date: '04/26/12'}]
दूसरा एक आंतरिक संरचना होती है, इस कोड का उपयोग कर बनाया:
pData = d3.nest()
.key(function(d) { return d.key; })
.map(data);
इस संरचना में परिणामी:
pData = {Group1: [{date: 04/23/12, key: "Group1", value: 37},
{date: 04/24/12, key: "Group1", value: 32},
{date: 04/25/12, key: "Group1", value: 45},
...],
Group2: [{date: 04/23/12, key: "Group2", value: 12},
{etc, etc, etc}],
GroupX: [...] }
मेरे प्रश्न: मैं एक स्टैक्ड स्ट्र बनाने के लिए उपर्युक्त डेटा संरचनाओं (या कुछ भिन्नता) में से एक का उपयोग करके d3.layout.stack()
जेनरेटर कैसे सेट करूं? अपने डेटा के लिए ucture इस तरह मैं इस के समान एक क्षेत्र जनरेटर करने के लिए इसे पारित कर सकते हैं कि:,
var areaGenerator = d3.svg.area()
.interpolate('monotone')
.x(function(d) { return x(d.date); })
.y0(h)
.y1(function(d) { return y(d.value); });
अविश्वसनीय रूप से उपयोगी:
यहाँ एक काम कर उदाहरण है। जवाब के लिए धन्यवाद! – mbeasley
बहुत उपयोगी, धन्यवाद! जावास्क्रिप्ट नोब्स (मेरे जैसे!) को इंगित करने योग्य मूल्य है कि डी। डीवल्यू (डेटा कॉलबैक में) से पहले + संख्या में परिवर्तित हो जाता है - देखें [यहां] (http://xkr.us/articles/javascript/unary जोड़ें /)। कॉलबैक में, y0 मान कैसे निर्दिष्ट किए जाते हैं? मैंने निरीक्षण करने के लिए [यह] (http://pastebin.com/amjkBRYV) कोड का उपयोग किया, और [यह] (http://i.imgur.com/lQFyJNL.png) आउटपुट प्राप्त किया। प्रत्येक ऑब्जेक्ट को दो बार लॉग इन किया जाता है - संपादन से पहले और बाद में। इससे पहले, इसमें केवल सीएसवी से डेटा होता है - इसके बाद, इसमें "y0 = 0" होता है, जैसा कि मैंने सेट किया है, लेकिन (जब क्रोम में ड्रिलिंग हो) भी एक वाई, और एक गैर-शून्य y0। वहाँ क्या चल रहा है? – scubbo
(संदर्भ के लिए, मैं y0 मान में हेरफेर करने की कोशिश कर रहा हूं ताकि ग्राफ़ प्रत्येक बिंदु पर मानों के बजाय संचयी योग प्रदर्शित करता हो) क्षमा करें अगर आपको मेरे पिछले संपादन के लिए एकाधिक नोटिफिकेशन मिलते हैं - स्टैक ओवरफ्लो शैली में उपयोग नहीं किया गया है, तो कुछ गलतियां! – scubbo