Chart.js图例占用太多空间

hyp*_*kcb 6 javascript legend chart.js

我在chart.js图例方面遇到了一些问题。具有长文本的图例占用太多空间,从而导致饼图的尺寸减小:

另一个例子是这样的:

如果我有更多的传说,那么甜甜圈图最终将变得越来越小。

我试图设置maxWidth但无济于事。

var options = {
            layout: {
                padding: {
                  top: 5
                }
            },
            responsive: true,
            maintainAspectRatio: false,
            legend: {
                display: true,
                position: 'right',
                maxWidth: 100,
                onClick: null
            },
            animation: {
                animateScale: true,
                animateRotate: true
            },

        };
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

我尝试按照此[解决方案] [3]创建html图例:

<div class="box-body" style="height:350px;">
<div class="float-left">
<div class="float-left" style="width:70%">

<canvas id="brandChart" style="position: relative; height: 350px;"></canvas>
</div>
<div class="float-left" style="width:30%">

<div id="js-legend" class="chart-legend">
</div>

</div>
</div>
Run Code Online (Sandbox Code Playgroud)

它确实限制了图例的宽度,但是这又导致了另一个问题,就是我折叠并扩展了div之后,画布丢失了,而我只剩下了图例div。

ɢʀᴜ*_*ᴜɴᴛ 8

首先,集合canvas-宽度和高度使用它-天然属性(不要使用style属性),如下所示:

<canvas id="brandChart" width="700" height="350"></canvas>
Run Code Online (Sandbox Code Playgroud)

注意:宽度应该是高度的两倍

然后,在图表选项中将responsive属性设置false为:

options: {
   responsive: false,
   ...
}
Run Code Online (Sandbox Code Playgroud)

???

<canvas id="brandChart" width="700" height="350"></canvas>
Run Code Online (Sandbox Code Playgroud)
options: {
   responsive: false,
   ...
}
Run Code Online (Sandbox Code Playgroud)