Использование константы на гистограмме?

#javascript #d3.js

Вопрос:

Всем привет, я работаю с гистограммой, используя D3.js в качестве поступающих данных я хотел бы использовать переменную, полученную из объекта диапазона (input1 в моем html).

вот фрагмент кода, в котором для данных используется значение 800 :

 const ranges = ['input1'];
const data = [
{ name: 'Rust', score: '800' },
 

Это работает нормально, но я не могу заставить его использовать мой контент; «диапазоны» (отображение входных данных из объекта диапазона)

 const ranges = ['input1'];
const data = [
{ name: 'Rust', score: 'ranges' },
 

Он не отображает никаких значений на гистограмме.

Кто-нибудь знает, как я могу вызвать свою переменную из объекта диапазона в качестве значения для гистограммы? любая помощь будет признательна.

код для гистограммы :

 const ranges = ['input1'];
const data = [
{ name: 'Rust', score: '800' },

];

const width = 900;
const height = 450;
const margin = { top: 50, bottom: 50, left: 50, right: 50 };

const svg = d3.select('#d3-container')
    .append('svg')
    .attr('width', width - margin.left - margin.right)
    .attr('height', height - margin.top - margin.bottom)
    .attr("viewBox", [0, 0, width, height]);

const x = d3.scaleBand()
    .domain(d3.range(data.length))
    .range([margin.left, width - margin.right])
    .padding(0.1)

const y = d3.scaleLinear()
    .domain([0, 100])
    .range([height - margin.bottom, margin.top])

svg
    .append("g")
    .attr("fill", 'royalblue')
    .selectAll("rect")
    .data(data.sort((a, b) => d3.descending(a.score, b.score)))
    .join("rect")
    .attr("x", (d, i) => x(i))
    .attr("y", d => y(d.score))
    .attr('title', (d) => d.score)
    .attr("class", "rect")
    .attr("height", d => y(0) - y(d.score))
    .attr("width", x.bandwidth());

function yAxis(g) {
    g.attr("transform", `translate(${margin.left}, 0)`)
        .call(d3.axisLeft(y).ticks(null, data.format))
        .attr("font-size", '20px')
}

function xAxis(g) {
    g.attr("transform", `translate(0,${height - margin.bottom})`)
        .call(d3.axisBottom(x).tickFormat(i => data[i].name))
        .attr("font-size", '20px')
}

svg.append("g").call(xAxis);
svg.append("g").call(yAxis);
svg.node(); 
 <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
    <script src="https://d3js.org/d3.v5.min.js"></script>

    <title>Document</title>
</head>

<body>

    <!-- QUESTION 1  -->
    <form id="q1">
        <div id="qhead" class="d-flex p-2 bd-highlight text-center">
            <h1>Question 1</h1>
        </div>
        <div id="ondertitel" class="d-flex p-2 bd-highlight text-center">
            <h2>Ik ervaar rust wanneer ik een duidelijke planning heb voor die dag. </h2>
        </div>
        <div class="d-flex p-4 text-center">
            <label for="customRange2" class="form-label"></label>
            <input type="range" class="form-range" min="1" max="5" id="input1" oninput="q1points.value = this.value">
            <output id="q1points">0</output>
        </div>
        <p id="res_1"></p>
        <button id="btn-1" type="button" class="btn btn-danger">Volgende</button>
    </form>

    <!-- Result divs -->


    <div id="group">
        <p id="result"></p>
    </div>

    <div id="d3-container">
        <h1>Resultaten</h1>
    </div>


    <!-- links -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="quiz_2.js"></script>
    <script src="https://cdn.anychart.com/releases/8.0.0/js/anychart-base.min.js"></script>

</body>

</html>