Chart.js不尊重我的容器尺寸

lis*_*ite 7 html javascript css jquery chart.js

我正在尝试使用Chart.js库创建折线图.我有一个div尺寸为600px宽,250px高度的尺寸,从我读过的库中,我们想要使用这些父尺寸创建折线图.

以下显示了我的HTML元素:

<div style="width:600px;height:250px">
    <canvas id="myChart"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

$(document).ready(function(){
     var data = {
                    labels: ["January", "February", "March", "April", "May", "June", "July"],
                    datasets: [
                        {
                            label: "My First dataset",
                            fillColor: "rgba(220,220,220,0.2)",
                            strokeColor: "rgba(220,220,220,1)",
                            pointColor: "rgba(220,220,220,1)",
                            pointStrokeColor: "#fff",
                            pointHighlightFill: "#fff",
                            pointHighlightStroke: "rgba(220,220,220,1)",
                            data: [65, 59, 80, 81, 56, 55, 40]
                        },
                        {
                            label: "My Second dataset",
                            fillColor: "rgba(151,187,205,0.2)",
                            strokeColor: "rgba(151,187,205,1)",
                            pointColor: "rgba(151,187,205,1)",
                            pointStrokeColor: "#fff",
                            pointHighlightFill: "#fff",
                            pointHighlightStroke: "rgba(151,187,205,1)",
                            data: [28, 48, 40, 19, 86, 27, 90]
                        }
                    ]
                };
                var ctx = $("#myChart").get(0).getContext("2d");
                new Chart(ctx).Line(data, {
                    responsive:true
                });
});
Run Code Online (Sandbox Code Playgroud)

这显示了我在jsfiddle中遇到的问题:https://jsfiddle.net/Lr88htnp/ (请注意,渲染图表的尺寸为600x300)

pot*_*ngs 34

您需要将该选项设置maintainAspectRatio为false

....
new Chart(ctx).Line(data, {
    responsive:true,
    maintainAspectRatio: false
});
Run Code Online (Sandbox Code Playgroud)

小提琴 - https://jsfiddle.net/3cxeyLc8/

  • @AFriend 也许是这样,但是 `maintainAspectRatio` 选项仍然可用,并且解决了问题。 (3认同)
  • 这是从 chart.js 版本 2 开始创建图表的过时方式 (2认同)
  • 啊啊终于,近十几个话题都没有人提到这个长宽比了。好工作 ! (2认同)

Ban*_*ian 8

将以下CSS添加到#myChart:

 <canvas id="myChart" style="width:100%;height:100%;"></canvas>
Run Code Online (Sandbox Code Playgroud)