में प्लॉट रोलिंग/मूविंग औसत अग्रिम में डेटा को कुशलतापूर्वक किए बिना डी 3 में रोलिंग/मूविंग औसत प्लॉट करने का एक तरीका ढूंढ रहे हैं। तो मैं इसके बाद दो डेटा बिंदुओं के औसत से लाइन को सुगम बनाना चाहता हूं। मेरे कोड मैं movingAverageLine निम्नलिखित डेटा बिंदुओं के औसत की गणना करने के लिए निर्दिष्ट कर सकते हैं इसडी 3.जेएस
var data = [3, 66, 2, 76, 5, 20, 1, 3, 8, 90, 2, 5, 70];
var w = 20,
h = 80;
var x = d3.scale.linear()
.domain([0, 1])
.range([0, w]);
var y = d3.scale.linear()
.domain([0, 100])
.rangeRound([h, 0]);
var chart = d3.select("body").append("svg")
.attr("class", "chart")
.attr("width", w * data.length -1)
.attr("height", h);
var line = d3.svg.line()
.x(function(d,i) { return x(i); })
.y(function(d) { return y(d); })
var movingAverageLine = d3.svg.line()
.x(function(d,i) { return x(i); })
.y(function(d) { return y(d); })
chart.append("svg:path").attr("d", line(data));
chart.append("svg:path").attr("d", movingAverageLine(data));
की तरह है? मैं उस समारोह में उन तक पहुंचने का एक तरीका नहीं सोच सकता।
मैंने jsfiddle पर एक उदाहरण स्थापित किया है। http://jsfiddle.net/tjjjohnson/XXFrg/2/#run
संपादित सवाल एक छोटे से स्पष्ट करने के लिए। "रोलिंग" से मेरा मतलब है कि प्रत्येक दिन कई बिंदुओं का औसत उपयोग करें। तीन दिन औसत। यह लाइन को सुचारू बनाना है। – tjjjohnson
मुझे लगता है कि आपको डेटा बदलना होगा - जब आप सरणी को डी 3 फ़ंक्शन में पास करते हैं, तो यह एक समय में 1 आइटम के माध्यम से फिर से शुरू हो जाएगा। किसी भी कारण से आप पास करने के लिए सिर्फ एक और सरणी नहीं बना सकते हैं? – mike
कोई कारण नहीं है कि मैं डेटा को संशोधित नहीं कर सकता, मैं बस सोच रहा था कि क्या कुछ चालाक डी 3 उत्कृष्टता है जो इसे अच्छी तरह से कर सकती है – tjjjohnson