2013-04-23 6 views
13

के लिए टेक्स्ट निर्दिष्ट करें मेरे एक्स-अक्ष में वर्तमान में संख्याएं हैं। मैं चाहता हूं कि टिक को मेरी ऑब्जेक्ट से डेटा के साथ प्रतिस्थापित किया जाए (विशेष रूप से कीवर्ड मान)। मैं इसे कैसे पूरा करूं?d3.js x-axis

I have a working Fiddle

var dataset = [ 
      {"keyword": "payday loans", "global": 1400000, "local": 673000, "cpc": "14.11"}, 
      {"keyword": "title loans", "global": 165000, "local": 160000, "cpc": "12.53" }, 
      {"keyword": "personal loans", "global": 550000, "local": 301000, "cpc": "6.14"}, 
      {"keyword": "online personal loans", "global": 15400, "local": 12900, "cpc": "5.84"}, 
      {"keyword": "online title loans", "global": 111600, "local": 11500, "cpc": "11.74"} 
     ]; 

var xAxis = d3.svg.axis() 
    .scale(xScale) 
    .orient("bottom"); 
// xAxis 
svg.append("g") // Add the X Axis 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + (h) + ")") 
    .call(xAxis); 
//xAxis Label 
svg.append("text") 
    .attr("transform", "translate(" + (w/2) + " ," + (h + margin.bottom - 5) +")") 
    .style("text-anchor", "middle") 
    .text("Keyword"); 

उत्तर

36

इस लक्ष्य को हासिल करने के लिए सबसे आसान तरीका है अपने अक्ष के लिए tickFormat समारोह स्थापित करने के लिए है:

var xAxis = d3.svg.axis() 
    .scale(xScale) 
    .tickFormat(function(d) { return dataset[d].keyword; }) 
    .orient("bottom"); 

आप चौड़ाई लेबल फिट करने के लिए एक सा tweak करना पड़ सकता है (या rotate them)।

ऐसा करने का "उचित" तरीका आपके लिए xScale डोमेन मानों को सरणी सूचकांक के बजाय कीवर्ड के रूप में निर्दिष्ट करना होगा। फिर आपको अन्य सभी कोडों को बदलना होगा जो xScale का उपयोग करते हैं।

+0

बहुत अच्छा लगता है। मैंने कुछ ऐसा करने की कोशिश की थी। लेकिन यह धुरी को एक साथ तोड़ दिया। लेकिन यह अब काम करता है! धन्यवाद। फिर मैंने ओवरलैपिंग से रोकने के लिए पाठ को घुमाने के लिए कुछ स्टाइल जोड़ा। – EnigmaRM

 संबंधित मुद्दे