Chart.js:饼图的宽度和高度未得到遵守

les*_*gar 3 html javascript css chart.js

我正在使用Chart.js来创建饼图.我需要每张图表为76x76px.不幸的是,渲染图表总是比包装div和画布本身的尺寸小一点.

如果你检查FIDDLE中的图表,你会看到我的意思:canvas元素有一个固定的大小,但图表本身并没有完全填充它.

在此输入图像描述

这几乎就好像有一个不存在的东西保留了最高保证金.

代码:

HTML

<div class="wrapper">
  <canvas id="myChart" width="76" height="76"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

JS

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
    type: 'pie',
    data: {
        datasets: [{
            data: [30, 70],
            backgroundColor: [
                'green',
                'gray'
            ],
            borderWidth: 0
        }]
    },
    options: {
        tooltips: {
             enabled: false
        },
        events: []
    }
});
Run Code Online (Sandbox Code Playgroud)

CSS

.wrapper {
  width: 76px;
  height: 76px;
}
Run Code Online (Sandbox Code Playgroud)

任何想法我应该做什么使饼图填充76x76px画布?

and*_*eas 5

为此保留了额外空间legend,默认情况下已启用.只需禁用它,您应该拥有图表的整个空间:

legend: {
  display: false
}
Run Code Online (Sandbox Code Playgroud)

一个工作的例子:

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
  type: 'pie',
  data: {
    datasets: [{
      data: [30, 70],
      backgroundColor: [
        'green',
        'gray'
      ],
      borderWidth: 0
    }]
  },
  options: {
    tooltips: {
      enabled: false
    },
    legend: {
      display: false  // <- the important part
    },
    events: []
  }
});
Run Code Online (Sandbox Code Playgroud)
.wrapper {
  width: 76px;
  height: 76px;
  border: 1px solid black; /* for demonstration purposes*/
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<div class="wrapper">
  <canvas id="myChart" width="76" height="76"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 嗯,你是对的。如果需要,您可以在此处报告该行为:https://github.com/chartjs/Chart.js/issues ;) (2认同)