Chart.js填充画布

时间:2016-07-27 11:12:19

标签: canvas padding chart.js

我正在使用最新的chart.js库来生成没有比例的折线图,但是存在填充问题,并且顶部和底部点被切断。我看不到填充画布的任何选项。

chart.js points cut off

我的配置如下所示。

var config = {
    type: 'line',
    data: {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [{
            label: "Sales",
            data: [10, 20, 50, 25, 60, 12, 48],
            fill: true,
            lineTension: 0.25,
            borderColor: "#558aeb",
            backgroundColor: "#558aeb"
        }]
    },
    options: {
        responsive: true,
        legend: {
            display: false
        },
        tooltips: {
            mode: 'label'
        },
        hover: {
            mode: 'dataset'
        },
        scales: {
            xAxes: [{
                display: false
            }],
            yAxes: [{
                display: false
            }]
        }
    }
};

4 个答案:

答案 0 :(得分:9)

如果我理解问题是正确的,Chart JS的当前版本(> 2.4)支持围绕图表布局的填充配置选项。

layout: {
    padding: {
        // Any unspecified dimensions are assumed to be 0                     
        top: 25
    }
}

Check here

答案 1 :(得分:6)

我相信你的问题不是填充,但我可能是错的。在我看来,你的问题是自动检测可绘制区域的高度,当你的数据中的最大数字是好的和圆形时,如60。当最大数量为61,62等时,尝试查看问题是否仍然存在。因此,我建议您烹饪数据,以免发生此类问题。如果数据烹饪不是一个选项,请尝试明确定义y轴中的最大刻度,以使其略高于数据中的最大数量。在您的情况下,请尝试使用此:

yAxes: [{
    display: false,
    ticks: {
        max: 62
    }
}]

因此,您需要计算数据中的最大数量并添加一些小的数据,以便明确定义将消除意外裁剪的最大值。有人可以有更好的理解和解决方案,但这是我能想到的选择。当然,那就是烹饪你的数据。

答案 2 :(得分:0)

我已经调查了如何制作修补程序来解决这个问题。我看到了三种奇怪的行为:

1-如果发生重大变化,数据会中断,例如:

[0, 10, 70, 30, 20, 12, 50, 200, 200, 200, 200, 200]

2-'错误'始终是borderWidth高度的一半。

3-当我们在下一个COMMIT上更改core.layoutService.js的第36行时,可能会引入该错误

在第二位,我在功能中看到了两个奇怪的填充变量'更新' core.layoutService:

第29行我们有功能,第35和36行我们有奇怪的变种。

// The most important function
        update: function(chartInstance, width, height) {
            if (!chartInstance) {
                return;
            }

            var xPadding = 0;
            var yPadding = 0;

我已经看到该函数对该变量的作用,尤其是yPadding。我无法通过yPadding完成任何有用的计算。我认为这是问题所在。我们始终将yPadding维持为0,并且恕我直言,这是在该文件的另一个版本中应用的错误。

解决方案如下,我开发了,因为该提交的开发人员背后的需求删除了该行。

这是一个好主意,我会做一个公关,如果它被批准将是解决方案

如果您应用该代码,您可以在图表的样式配置中设置填充,如果您不应用任何配置,他将根据图表高度采用默认值。

配置道具示例:

padding: {
  x: 5,
  y: 4
},

您有代码和所有解释: https://github.com/chartjs/Chart.js/pull/3349

答案 3 :(得分:0)

如果您想增加 Y 轴上的“缓冲区”,以便最大值不会一直显示到顶部,我已经使用“grace”成功地做到了。

options: {
   scales: {
     y: {
          type: 'linear',
          grace: '10%'
        }
    }
 }

Chartjs 3.x Documentation for grace