Увеличить разрыв между линейным графиком и легендой ChartJS - PullRequest
1 голос
/ 17 апреля 2020

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

Это должно быть так:

this

Но я получил это (см. мой фрагмент кода)

Вот мой код:

new Chart(document.getElementById("line-chart"), {
        type: "line",
        data: {
          labels: ["Label1", "Label2", "Label3", "Label4"],
          datasets: [
            {
              label: "A",
              fill: false,
              data: [10, 30, 60, 100],
              borderWidth: 1,
              backgroundColor: "red",
              borderColor: "red",
            },
            {
              label: "B",
              fill: false,
              data: [28, 80, 60, 60],
              borderWidth: 1,
              backgroundColor: "green",
              borderColor: "green",
            },
          ],
        },
        options: {
          legend: {
            align: "start",
            position: "right",
            labels: {
              usePointStyle: true,
              fontSize: 10,
            },
          },
          elements: {
            line: {
              tension: 0,
            },
          },
          responsive: true,
          maintainAspectRatio: false,
        },
      });
canvas {
  height: 35vh !important;
  width: 90%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>


<head></head>
<body>
  <canvas id="line-chart"></canvas>
</body>

1 Ответ

1 голос
/ 17 апреля 2020

В зависимости от того, где находится легенда, доступны некоторые варианты быстрого исправления. См. этот вопрос

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

Вы можете установить это в опциях:

options: {
   legend: {
       display:false, //turn default legend off
    },
   legendCallback : legendBuilder, //link to your custom function returning html string
}

Определите, где ваша легенда будет go в html:

<div id="chart-container">
    <canvas id="line-chart"></canvas>
    <div id="chart-legend"></div>
</div>

Затем сгенерируйте легенда:

var myLegend = document.getElementById("chart-legend");
myLegend.innerHTML = myChart.generateLegend();

рабочий пример

...