Chart.js отображение каждой буквы метки и данных в виде одного значения на диаграмме. Предоставленные данные и метки представляют собой массивы

#arrays #charts #chart.js #label #ejs

Вопрос:

Я использую Chart.js чтобы составить линейный график. Работа кода заключается в следующем. (Снимки кода ниже)

  • Данные извлекаются из MongoDB, а затем массив числовых данных передается в файл ejs.
  • В файле ejs, когда отдельные элементы извлеченных данных передаются в массив данных, он работает правильно, но не тогда, когда передается весь массив.

График должен выглядеть следующим образом:

(Всего 30 значений, но для выборки передается только 5)

желаемый результат

Но когда я передаю весь массив в данные, тогда это происходит:

Неверный Результат

Соответствующий код выглядит следующим образом.

Первый код (с использованием express, а данные для графика приведены в разделе «цены». Это массив, как я уже неоднократно подтверждал.Кроме того, отдельный тег используется для чего-то другого и не является необходимым для диаграммы.)

 app.get('/:symb', async (req, res) => { const { symb } = req.params;

let prices = await (await price.find({ Symbol: symb }).distinct("Data.Close")).slice(-30);



res.render('individual.ejs', { prices, individual }); 

Второй код (с использованием ejs)

 <canvas id="myChart" width="400" height="400"></canvas>
        <script>

            var ctx = document.getElementById('myChart').getContext('2d');
            var myChart = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: `<%=base %>`,
                    datasets: [{
                        label: '# of Votes',
                        data: `<%= prices %>`,
                        backgroundColor: 'green', options: {
                            scales: {
                                yAxes: [{
                                    ticks: {
                                        beginAtZero: true

                                    }
                                }]
                            }
                        }

                    }]
                }
            });
 

(Здесь метки «база» представляют собой массив строк от 1 до 30 [‘1′,’2’,’3’…] и это всего лишь подсчет основных данных «цены».

Ответ №1:

Похоже, ваша проблема в том, что вы преобразуете массив меток в строку, окружая его обратными указателями. Chart.js ему это не нравится. Если вы удалите обратные метки вокруг переменной массива меток, а также вокруг переменной данных, это должно работать нормально

Комментарии:

1. ОГРОМНОЕ ВАМ СПАСИБО!! ПРОБЛЕМА РЕШАЕТСЯ ПУТЕМ ПРЕОБРАЗОВАНИЯ СТРОКИ В МАССИВ С ПОМОЩЬЮ string.split.