Chart.js 填充 canvas
Chart.js padding canvas
我正在使用最新的 chart.js 库来生成没有刻度的折线图,但是存在填充问题并且顶部和底部的点被截断了。我看不到任何填充选项 canvas.
我的配置如下。
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
}]
}
}
};
我相信你的问题不是填充,但我可能是错的。正如我所看到的,你的问题是自动检测可绘制区域的高度,当你的数据中的最大数字很好而且圆润时,比如 60。试试看当最大数为61、62等时问题是否仍然存在。所以,我建议你煮你的数据,这样就不会出现这样的问题。如果数据烹饪不是一个选项,请尝试明确定义 y 轴中的最大刻度,使其略高于数据中的最大数字。在你的情况下,尝试使用这个:
yAxes: [{
display: false,
ticks: {
max: 62
}
}]
所以您需要计算数据中的最大数量并添加一些小的东西,以便明确定义最大刻度,从而避免意外裁剪。有人可能会有更好的理解和解决方案,但这是我能想到的选择。那,当然还有烹饪你的数据。
我已经研究过如何制作修补程序来解决这个问题。我看到了三个奇怪的行为:
1- 如果有重大变化,数据会中断,例如:
[0, 10, 70, 30, 20, 12, 50, 200, 200, 200, 200, 200]
2- 'error' 始终是 borderWidth 高度的一半。
3-当我们在下一个 COMMIT
中更改 core.layoutService.js 的第 36 行时,可能会引入该错误
第二,我在 core.layoutService 的函数 'update' 中看到了两个奇怪的填充变量:
在第 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,恕我直言,这是在该文件的另一个版本中应用的错误。
解决方案如下,我开发了那个,因为该提交的开发人员背后的需求删除了该行。
这是一个修补程序,我会进行 PR,如果获得批准,这将是解决方案
如果您应用该代码,您将可以在图表的样式配置上设置填充,此外,如果您不应用任何配置,他将根据图表高度采用默认值。
配置道具示例:
padding: {
x: 5,
y: 4
},
你在这里有代码和所有解释:
https://github.com/chartjs/Chart.js/pull/3349
如果我对问题的理解正确,则当前版本 (>2.4) 的 Chart JS 支持图表布局周围的填充配置选项。
layout: {
padding: {
// Any unspecified dimensions are assumed to be 0
top: 25
}
}
如果你想增加 Y 轴上的“缓冲区”,这样最大值就不会一直显示到顶部,我已经使用“grace”成功地做到了。
options: {
scales: {
y: {
type: 'linear',
grace: '10%'
}
}
}
我正在使用最新的 chart.js 库来生成没有刻度的折线图,但是存在填充问题并且顶部和底部的点被截断了。我看不到任何填充选项 canvas.
我的配置如下。
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
}]
}
}
};
我相信你的问题不是填充,但我可能是错的。正如我所看到的,你的问题是自动检测可绘制区域的高度,当你的数据中的最大数字很好而且圆润时,比如 60。试试看当最大数为61、62等时问题是否仍然存在。所以,我建议你煮你的数据,这样就不会出现这样的问题。如果数据烹饪不是一个选项,请尝试明确定义 y 轴中的最大刻度,使其略高于数据中的最大数字。在你的情况下,尝试使用这个:
yAxes: [{
display: false,
ticks: {
max: 62
}
}]
所以您需要计算数据中的最大数量并添加一些小的东西,以便明确定义最大刻度,从而避免意外裁剪。有人可能会有更好的理解和解决方案,但这是我能想到的选择。那,当然还有烹饪你的数据。
我已经研究过如何制作修补程序来解决这个问题。我看到了三个奇怪的行为:
1- 如果有重大变化,数据会中断,例如:
[0, 10, 70, 30, 20, 12, 50, 200, 200, 200, 200, 200]
2- 'error' 始终是 borderWidth 高度的一半。
3-当我们在下一个 COMMIT
中更改 core.layoutService.js 的第 36 行时,可能会引入该错误第二,我在 core.layoutService 的函数 'update' 中看到了两个奇怪的填充变量:
在第 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,恕我直言,这是在该文件的另一个版本中应用的错误。
解决方案如下,我开发了那个,因为该提交的开发人员背后的需求删除了该行。
这是一个修补程序,我会进行 PR,如果获得批准,这将是解决方案
如果您应用该代码,您将可以在图表的样式配置上设置填充,此外,如果您不应用任何配置,他将根据图表高度采用默认值。
配置道具示例:
padding: {
x: 5,
y: 4
},
你在这里有代码和所有解释: https://github.com/chartjs/Chart.js/pull/3349
如果我对问题的理解正确,则当前版本 (>2.4) 的 Chart JS 支持图表布局周围的填充配置选项。
layout: {
padding: {
// Any unspecified dimensions are assumed to be 0
top: 25
}
}
如果你想增加 Y 轴上的“缓冲区”,这样最大值就不会一直显示到顶部,我已经使用“grace”成功地做到了。
options: {
scales: {
y: {
type: 'linear',
grace: '10%'
}
}
}