【问题标题】:Binding Chart to Canvas height width将图表绑定到画布高度宽度
【发布时间】:2016-11-21 15:12:02
【问题描述】:

我正在使用带有以下 html 的 Chart.js:

<canvas id="fisheye" width="100" height="100" style="border:1px solid;"></canvas>

这是 Javascript 部分:

getChart: function () {
        var ctx = document.getElementById("fisheye");
        var myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: ["json1", "json2", "json3", "json4"],
                datasets: [{
                    label: '1.3.0 Version',
                    type: 'bar',
                    data: [52.4060092977, 90.0854057722, 196.576968515, 77.6216726434],
                    backgroundColor: [
                        'rgba(255, 99, 132, 0.2)',
                        'rgba(255, 99, 132, 0.2)',
                        'rgba(255, 99, 132, 0.2)',
                        'rgba(255, 99, 132, 0.2)'
                        // 'rgba(54, 162, 235, 0.2)',
                        // 'rgba(255, 206, 86, 0.2)',
                        // 'rgba(75, 192, 192, 0.2)'
                    ],
                    borderColor: [
                        'rgba(255,99,132,1)',
                        'rgba(255,99,132,1)',
                        'rgba(255,99,132,1)',
                        'rgba(255,99,132,1)'
                        // 'rgba(54, 162, 235, 1)',
                        // 'rgba(255, 206, 86, 1)',
                        // 'rgba(75, 192, 192, 1)'
                    ],
                    borderWidth: 1
                },
                {
                    label: '1.3.13 Version',
                    type: 'bar',
                    data: [50.0744953192, 93.5542439586, 153.288788005, 101.402897964],
                    backgroundColor: [
                        'rgba(54, 162, 235, 0.2)',
                        'rgba(54, 162, 235, 0.2)',
                        'rgba(54, 162, 235, 0.2)',
                        'rgba(54, 162, 235, 0.2)'
                        // 'rgba(255, 206, 86, 0.2)',
                        // 'rgba(75, 192, 192, 0.2)',
                        // 'rgba(153, 102, 255, 0.2)'
                    ],
                    borderColor: [
                        'rgba(54, 162, 235, 1)',
                        'rgba(54, 162, 235, 1)',
                        'rgba(54, 162, 235, 1)',
                        'rgba(54, 162, 235, 1)'
                        // 'rgba(255, 206, 86, 1)',
                        // 'rgba(75, 192, 192, 1)',
                        // 'rgba(153, 102, 255, 1)'
                    ],
                    borderWidth: 1
                }
                ]
            },
            options: {
                title: {
                    display: true,
                    text: 'Export Chart'
                },
                legend: {
                    display: true,
                },
                scales: {
                    yAxes: [{
                        ticks: {
                            beginAtZero:true,
                            stepSize:50
                        }
                    }]
                },
                responsive: true
            }
        });
        return myChart;
    }

我的问题是我的图表似乎扩展到全屏高度和宽度。 我想将我的图表大小限制为画布大小。这样我可以在网格中而不是每页中放置图表 (注意:我只展示了一张图表的代码,但你可以想象它与其他图表类似)

【问题讨论】:

    标签: javascript html canvas chart.js


    【解决方案1】:

    将画布包裹在 div/span/something 中并在那里设置大小可能更容易。正如您设置的 responsive: true 这意味着 chart.js 尝试在调整大小时填充父级,它通过设置画布高度和宽度来做到这一点。 https://jsfiddle.net/zpvfph9m/1/

    <div style="width:50%">
       <canvas id="fisheye" width="400" height="400"></canvas>
    </div>
    

    这对你有用吗?

    【讨论】:

    • 如何将数据集外部化到某个文件。那里有很多重复,我想将上面代码中的数据块外部化以分隔文件。代码提示表示赞赏。我是 Javascript 的新手 :(
    • 好的,我使用另一个 javascript 进行了外部化。我在相同的 jsfiddle function () { return { data : function(){ var data = { ...} return data }, options: function(){ var option = { ... } return option 中添加了 sudo 代码} }
    • 在理解你想要什么方面有点挣扎。我是这样解释的。如果我想将选项、数据和剩余配置分隔在 3 个不同的文件中,您可以在 3 个不同的 js 文件中创建它们,然后将它们全部连接到同一个文件中,然后再将代码放在服务器/虚拟服务器上。前任使用其中之一:stackoverflow.com/questions/301442/… 然后您将获得源代码分离的优势,但您不会在浏览器中出现 3 个请求的性能损失。
    • 我不确定如何在 jsfiddle 中分离到不同的 js 文件,而不使用非常繁重的 ajax。您可能想要做的是稍微参数化创建图。 jsfiddle.net/zpvfph9m/3
    猜你喜欢
    • 1970-01-01
    • 2011-11-03
    • 2019-12-25
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多