रडार चार्ट के लिए न्यूनतम मान के रूप में 1 का उपयोग करना

मैं इस उदाहरण के आधार पर एक D3.js रडार चार्ट का उपयोग कर रहा हूं: https://github.com/alangrafu/रडार चार्ट-डी 3

समस्या यह है कि मेरे डेटा का न्यूनतम मान 1 है, इसलिए मैं रडार के बीच में मान 1 रखना चाहता हूं। लेकिन लिपि मानती है कि न्यूनतम मान 0 है।

क्या इसे बदलने का कोई तरीका है? मदद करने के लिए धन्यवाद।

0
ऐसा लगता है कि यह काफी बड़ा बदलाव होगा - न्यूनतम मान कभी भी स्पष्ट रूप से सेट नहीं होता है, लेकिन 0 पूरे कोड में माना जाता है।
जोड़ा लेखक Lars Kotthoff, स्रोत

1 उत्तर

यह थोड़ा हैकिश है, लेकिन आपके इनपुट डेटा को संशोधित करना आसान हो सकता है। उदाहरण पृष्ठ से:

d = [
     [
           {axis: "strength", value: 13}, 
           {axis: "intelligence", value: 1}, 
           {axis: "charisma", value: 8},  
           {axis: "dexterity", value: 4},  
           {axis: "luck", value: 9}
          ],[
           {axis: "strength", value: 3}, 
           {axis: "intelligence", value: 15}, 
           {axis: "charisma", value: 4}, 
           {axis: "dexterity", value: 1},  
           {axis: "luck", value: 15}
          ],[
           {axis: "strength", value: 5}, 
           {axis: "intelligence", value: 1}, 
           {axis: "charisma", value: 16}, 
           {axis: "dexterity", value: 10},  
           {axis: "luck", value: 5}
     ]
];

साजिश को 0 के बजाय 1 पर शुरू करने के लिए, बस घटाएं 1:

d.forEach(function(shape){
  shape.forEach(function(attribute){
    attribute.value = attribute.value - 1;
  });
});

इसे ठीक से करने के लिए, आपको पुस्तकालय का स्रोत

एक पैमाने बनाएँ:

var scale = d3.scale.linear().domain([cfg.minValue, cfg.maxValue])

वह मानचित्र [0, 1] के लिए मान करता है। फिर, के सभी उदाहरणों को प्रतिस्थापित करें

parseFloat(Math.max(j.value, 0))/cfg.maxValue

साथ में

scale(parseFloat(Math.max(j.value, 0)))
1
जोड़ा
धन्यवाद एडम। मैंने पुस्तकालय बदल दिया (चूंकि मैंने इसे एक किंवदंती प्रदर्शित करने के लिए वैसे भी बदल दिया) और यह आपके समायोजन के साथ ठीक काम करता है। इसके अलावा इससे मुझे डी 3 को बेहतर समझने में मदद मिली। धन्यवाद!
जोड़ा लेखक lorenz, स्रोत