smartGraph是一个强大的jQuery插件,允许开发人员使用JavaScript和HTML5画布绘制动态、响应、可拖动、矢量形状、无限扩展的图形。
在数学应用程序中很有用,可以生成以有组织的方式表示数据或值的图形和图表,例如函数的图形。
1.要开始,请在网页上包含jQuery JavaScript库和smartGraph插件的文件。
<script src="/path/to/cdn/jquery.slim.min.js"></script> <script src="/path/to/dist/js/jquery.smartGraph.min.js"></script> <link rel="stylesheet" href="/path/to/dist/css/jquery.smartGraph.min.css" />
2.创建一个画布元素来保存图形。
<div class="smart-graph smart-graph-example"> <canvas></canvas> </div>
3.使用自定义记号和标签创建基本的笛卡尔坐标系。
$('.smart-graph-example').smartGraph({
color: '#343a40',
axises: {
thickness: null,
/* inherits from lines.thickness */
color: null,
/* inherits from lines.color */
ticks: {
step: 1,
size: 8,
thickness: null,
/* inherits from axises.thickness */
color: null,
/* inherits from lines.color */
titles: {
font: '10px Calibri',
padding: 10,
color: null,
/* inherits from texts.color */
render: function(value, axisCreatorManager) {
return axisCreatorManager.getOptimallyRoundedTick(value);
}
}
},
labels: {
font: '20px Calibri',
color: null /* inherits from texts.color */
},
x: {
color: null,
/* inherits from axises.color */
label: {
caption: 'x',
color: null,
/* inherits from axises.labels.color */
padding: 20
},
ticks: {
step: null,
/* inherits from axises.ticks.step */
color: null,
/* inherits from axises.color */
titles: {
color: null,
/* inherits from axises.ticks..titles.color */
render: null /* inherits from axises.ticks.titles.render */
}
}
},
y: {
color: null,
/* inherits from axises.color */
label: {
caption: 'y',
color: null,
/* inherits from axises.labels.color */
padding: 20
},
ticks: {
step: null,
/* inherits from axises.ticks.step */
color: null,
/* inherits from axises.color */
titles: {
color: null,
/* inherits from axises.ticks.titles.color */
render: null /* inherits from axises.ticks.titles.render */
}
}
}
},
data: {
points: [],
functions: []
},
point: {
size: 10,
thickness: 2,
color: null,
/* inherits from color */
hintlines: {
show: false,
color: null,
/* inherits from lines.color */
thickness: null,
/* inherits from lines.thickness */
dash: [2, 2]
},
label: {
font: '13px Calibri',
color: null,
/* inherits from texts.color */
padding: 7,
render: function(x, y) {
return '(' + x.roundDigits(2) + ', ' + y.roundDigits(2) + ')';
}
}
},
'function': {
step: null,
/* inherits from axises.x.ticks.step */
modifier: function() {
return null;
},
connectlines: {
show: true,
color: null,
/* inherits from lines.color */
thickness: null,
/* inherits from lines.thickness */
dash: []
},
points: {
color: null,
/* inherits from point.color */
size: null,
/* inherits from point.size */
thickness: null,
/* inherits from point.thickness */
hintlines: {
show: null,
/* inherits from point.hintlines.show */
color: null,
/* inherits from point.hintlines.color */
thickness: null,
/* inherits from point.hintlines.thickness */
dash: null /* inherits from point.hintlines.dash */
},
labels: {
font: null,
/* inherits from point.label.font */
color: null,
/* inherits from point.label.color */
padding: null,
/* inherits from point.label.padding */
render: function() {
return '';
}
}
}
},
lines: {
color: null,
/* inherits from color */
thickness: 1
},
texts: {
color: null /* inherits from color */
},
move: {
x: 0,
y: 0
},
responsive: {
enable: true,
ratio: 16 / 9
}
});
4.将数据(点和函数)添加到笛卡尔坐标系中。
$('.smart-graph-example').smartGraph('addData', {
points: [{
x: -2,
y: -2
}],
functions: [{
relation: x => Math.sin(x),
step: .1,
interval: [-4, 4],
points: {
size: 0
}
}]
})
5.该插件还允许用户使用智能图形.click事件
$('.smart-graph-example').attr('title', 'click to draw a point').on('smartGraph.click', function(_e, _settingsManager, x, y) {
$(this).smartGraph('addData', {
points: [{
x: x,
y: y,
color: 'red',
size: 9,
thickness: 2,
hintlines: {
color: 'darkred',
dash: [3, 4]
},
label: {
color: 'red',
render: function(x, y) {
return x.toFixed(2) + ', ' + y.toFixed(2);
}
}
}]
});
})
6.用于自定义图形的所有默认选项。
$('.smart-graph-example').smartGraph({
color: '#343a40',
axises: {
thickness: null, /* inherits from lines.thickness */
color: null, /* inherits from lines.color */
ticks: {
step: 1,
size: 8,
thickness: null, /* inherits from axises.thickness */
color: null, /* inherits from lines.color */
titles: {
font: '10px Calibri',
padding: 10,
color: null, /* inherits from texts.color */
render: function (value, axisCreatorManager) {
return axisCreatorManager.getOptimallyRoundedTick(value);
}
}
},
labels: {
font: '20px Calibri',
color: null /* inherits from texts.color */
},
x: {
color: null, /* inherits from axises.color */
label: {
caption: 'x',
color: null, /* inherits from axises.labels.color */
padding: 20
},
ticks: {
step: null, /* inherits from axises.ticks.step */
color: null, /* inherits from axises.color */
titles: {
color: null, /* inherits from axises.ticks..titles.color */
render: null /* inherits from axises.ticks.titles.render */
}
}
},
y: {
color: null, /* inherits from axises.color */
label: {
caption: 'y',
color: null, /* inherits from axises.labels.color */
padding: 20
},
ticks: {
step: null, /* inherits from axises.ticks.step */
color: null, /* inherits from axises.color */
titles: {
color: null, /* inherits from axises.ticks.titles.color */
render: null /* inherits from axises.ticks.titles.render */
}
}
}
},
data: {
points: [],
functions: []
},
point: {
size: 10,
thickness: 2,
color: null, /* inherits from color */
hintlines: {
show: false,
color: null, /* inherits from lines.color */
thickness: null, /* inherits from lines.thickness */
dash: [2, 2]
},
label: {
font: '13px Calibri',
color: null, /* inherits from texts.color */
padding: 7,
render: function (x, y) {
return '(' + x.roundDigits(2) + ', ' + y.roundDigits(2) + ')';
}
}
},
'function': {
step: null, /* inherits from axises.x.ticks.step */
modifier: function () {
return null;
},
connectlines: {
show: true,
color: null, /* inherits from lines.color */
thickness: null, /* inherits from lines.thickness */
dash: []
},
points: {
color: null, /* inherits from point.color */
size: null, /* inherits from point.size */
thickness: null, /* inherits from point.thickness */
hintlines: {
show: null, /* inherits from point.hintlines.show */
color: null, /* inherits from point.hintlines.color */
thickness: null, /* inherits from point.hintlines.thickness */
dash: null /* inherits from point.hintlines.dash */
},
labels: {
font: null, /* inherits from point.label.font */
color: null, /* inherits from point.label.color */
padding: null, /* inherits from point.label.padding */
render: function () {
return '';
}
}
}
},
lines: {
color: null, /* inherits from color */
thickness: 1
},
texts: {
color: null /* inherits from color */
},
move: {
x: 0,
y: 0
},
responsive: {
enable: true,
ratio: 16 / 9
}
})
7.API方法。
// update options
$('.smart-graph-example').smartGraph('setOptions', {
// options here
});
// add data
$('.smart-graph-example').smartGraph('addData', {
points: [
{
x: 4,
y: -2
}
]
});
// update data
$('.smart-graph-example').smartGraph('updateData', {
points: [
{
x: 4,
y: -2
}
]
});
// move the graph
$('.smart-graph-example').smartGraph('moveUp');
$('.smart-graph-example').smartGraph('moveDown');
$('.smart-graph-example').smartGraph('moveLeft');
$('.smart-graph-example').smartGraph('moveRight');
// zoom in/out the graph
$('.smart-graph-example').smartGraph('zoomIn');
$('.smart-graph-example').smartGraph('zoomOut');
2022-01-03
2021-01-28
2021-01-04