2015-08-10 4 views
1

Это должно иметь довольно простой и очевидный ответ, но мое исследование не принесло мне одного. Это вопрос. Это мой путь:Создание пути с правильными цифрами

svg.selectAll(".path") 
    .data(data.chartData, function(d){return d.vNm;}) 
    .enter().append("path") 
     .attr("d", function(d){ 
      return("M " + x(d.vNm) + " " + y(1200 + d.values.reduce(function(sum, d){return sum + d.amount;},0)) 
      + " L " + 43 + x(d.vNm) + " " + y(1200 + d.values.reduce(function(sum, d){return sum + d.amount;}, 0)) 
      + " L " + 21.5 + x(d.vNm) + " " + y(d.values.reduce(function(sum, d){ return sum + d.amount;}, 0)) + " z" 
      ); 
     }); 

Как вы можете видеть, я пытаюсь добавить 43 и 21.5 к моему х (d.vNm). Я попытался сделать это несколькими способами, но безрезультатно. Это то, что проявляется в элементах, когда я пытаюсь: enter image description here

И дисплей: enter image description here

(я не забочусь о ярлыках на данный момент, они будут превращены в легенде в ближайшее время, и я черные прямоугольники над каждым баром. Мне просто нужны треугольники, чтобы быть в нужном месте.)

+0

Когда вы манипулируете номером 'float', способность представлять это число в двоичном формате практически невозможна, если они должны быть абсолютно идеальными, вы должны попробовать усечение или округление, если оно будет работать для вашей ситуации точности. –

+0

Пример? @ iam-decoder –

ответ

1

Когда вы " L " + 43 + x(d.vNm) вы просите Javascript, чтобы добавить 43 в строку " L ", что приведет к " L 43". Затем аналогичным образом добавляется результат вызова x. Если вы хотите, чтобы числа, которые будут добавлены в виде чисел, вам необходимо сообщить Javascript о порядке приоритета для добавления с дополнительными скобками:

" L " + (43 + x(d.vNm)) 

На общей ноте, вам не нужно вручную добавить что-то к выход шкалы - то же самое можно добиться, отрегулировав диапазон шкалы.

+0

Отлично. Огромное спасибо. –

Смежные вопросы