在Chart.js折线图中渲染标签(Python/Pycharm)

sigwle7e  于 2023-04-06  发布在  Chart.js
关注(0)|答案(1)|浏览(191)

我正在尝试创建一个Chart.js折线图,其中可以通过渲染标签来动态设置标签。
下面是www.example.com中的代码views.py:

  1. def graph1(request):
  2. labels = [1, 2, 3, 4, 5]
  3. data1 = [1, 3, 2, 5, 4]
  4. data2 = [5, 8, 9, 6, 7]
  5. player1 = 'Paul'
  6. player2 = 'Lisa'
  7. return render(request, 'graph1.html', {
  8. 'labels': labels,
  9. 'data1': data1,
  10. 'data2': data2,
  11. 'player1': player1,
  12. 'player2': player2,
  13. })

下面是HTML代码:

  1. <div id="container" style="width: 100%;">
  2. <canvas id="line-chart"></canvas>
  3. </div>
  4. <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
  5. <script>
  6. var config = {
  7. type: 'line',
  8. data: {
  9. labels: {{ labels }},
  10. datasets: [{
  11. data: {{ data1 }},
  12. label: "Player 1",
  13. borderColor: "#3e95cd",
  14. fill: false,
  15. tension: 0
  16. }, {
  17. data: {{ data2 }},
  18. label: "Player 2",
  19. borderColor: "#8e5ea2",
  20. fill: false,
  21. tension: 0
  22. }
  23. ]
  24. },
  25. };
  26. window.onload = function() {
  27. var ctx = document.getElementById('line-chart').getContext('2d');
  28. window.myPie = new Chart(ctx, config);
  29. };
  30. </script>

我的图表是这样显示的:
enter image description here
而不是有静态标签显示“球员1”和“球员2”,我想这些是动态设置。所以,也许第一次显示为“保罗”和“丽莎”,下一次显示为“彼得”和“玛丽”(取决于什么是从数据库中读取)。
我尝试了不同的选项,但没有通过渲染获得此设置:

  1. <div id="container" style="width: 100%;">
  2. <canvas id="line-chart"></canvas>
  3. </div>
  4. <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>
  5. <script>
  6. var config = {
  7. type: 'line',
  8. data: {
  9. labels: {{ labels }},
  10. datasets: [{
  11. data: {{ data1 }},
  12. label: {{ player1 }},
  13. borderColor: "#3e95cd",
  14. fill: false,
  15. tension: 0
  16. }, {
  17. data: {{ data2 }},
  18. label: {{ player2 }},
  19. borderColor: "#8e5ea2",
  20. fill: false,
  21. tension: 0
  22. }
  23. ]
  24. },
  25. };
  26. window.onload = function() {
  27. var ctx = document.getElementById('line-chart').getContext('2d');
  28. window.myPie = new Chart(ctx, config);
  29. };
  30. </script>

用上面的代码来做,那么线图根本不会显示。
我感谢任何帮助,让这个工作。我是一个初学者Python/Pycharm开发人员,这是我的第一个项目。

wbrvyc0a

wbrvyc0a1#

我能够自己解决这个问题,只需在标签的渲染数据周围添加引号,如以下代码所示:

  1. datasets: [{
  2. data: {{ data1 }},
  3. label: "{{ player1 }}",
  4. borderColor: "#3e95cd",
  5. fill: false,
  6. tension: 0
  7. }, {
  8. data: {{ data2 }},
  9. label: "{{ player2 }}",
  10. borderColor: "#8e5ea2",
  11. fill: false,
  12. tension: 0
  13. }

相关问题