2013-05-14 6 views
14

के लिए अल्पविराम delimiters को हटा दें मेरे पास 3 कॉलम के साथ एक .json है जहां उनमें से एक 'वर्ष' है। कॉलम में केवल सालों हैं। कोई तारीख नहीं!डी 3 हजारों

जब मैं इसे 'एक्स' अक्ष पर ग्राफिंग कर रहा हूं, तो हजारों लोगों के लिए अल्पविराम डेलीमीटर के साथ आने वाले वर्ष आते हैं। अक्ष यह है कि 1,990

मैं यह पता लगाने की साल पार्स करने के लिए कैसे प्रयास कर रहे हैं की तरह बाहर आता है 1990 और 'एक्स' पर:

तो .json में तारीख इस प्रारूप है: "वर्ष" लेकिन अब तक मुझे कोई भाग्य नहीं है। मैंने निम्नलिखित कोशिश की है:

var parseDate = d3.time.format("%y").parse 

var x = d3.time.scale() 
.range([0, width]); 

//further down 

d3.json("waterData.json", function(error, json) { 

// Attach Data 
var data = json.data; 

// Select Data for X and Y 
var axis1 = 'Year'; 
var axis2 = 'Ratio' 

// Convert String into Numbers 
data.forEach(function(d) { 

///axis1 = parseDate(axis1); 

d[axis1] = +d[axis1] 
d[axis2] = +d[axis2] 
}); 

x.domain(d3.extent(data, function(d) { return d[axis1]; })); 
y.domain(d3.extent(data, function(d) { return d[axis2]; })); 


svg.append("g") 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + (height+10) + ")") 
    .call(xAxis) 
.append("text") 
    .attr("class", "label") 
    .attr("x", width) 
    .attr("y", -40) 
    .text(axis1) 

svg.append("g") 
    .attr("class", "y axis") 
    .attr("transform", "translate("+ -10 + "," + 0 + ")") 
    .call(yAxis) 
.append("text") 
    .attr("class", "label") 
    .attr("x", 10) 
    .style("fill", "#666") 
    .style("text-anchor", "start") 
    .text(axis2) 

अल्पविराम डेलीमीटर से छुटकारा पाने के तरीके के बारे में कोई सुझाव। या तारीख को पार्स करने के तरीके को समझने के लिए।

+0

ऐसा लगता है कि आप वास्तव में अपने 'parseDate' समारोह का उपयोग नहीं कर रहे हैं। 'डी [अक्ष 1] = parseDate (डी [अक्ष 1]) 'का प्रयास करें। –

+0

मैं इसका उपयोग कर रहा हूं, या कम से कम मैं 5 वां लाइन नीचे-शीर्ष की कोशिश कर रहा हूं। सुझाव के लिए धन्यवाद, लेकिन यह काम नहीं करता है। – Georgi

+0

आप इसे गलत जगह पर उपयोग कर रहे हैं। क्या यह आपका पूरा कोड है? –

उत्तर

25

आप अपने xAxis को .tickFormat(d3.format("d")) जोड़ना चाहिए:

var xAxis = d3.svg.axis().scale(x).orient("bottom").tickFormat(d3.format("d")); 
+0

बहुत बहुत धन्यवाद, यह पूरी तरह से काम करता है। – bfncs

+0

ध्यान दें कि इससे आपको दशमलव सटीकता कम हो जाती है –