스마트 그래프
smartGraph is a powerful jQuery plugin that allows developers to draw dynamic, responsive, draggable, vector-shaped, infinitely scalable graphs using JavaScript and HTML5 canvas.
Useful in math app to generate graphs and diagrams representing data or values in an organized manner, such as graph of a function.
How to use it:
1. To get started, include jQuery JavaScript library and the smartGraph plugin's files on the web page.
<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. Create a canvas element to hold the graph.
<div class="smart-graph smart-graph-example">
<canvas></canvas>
</div>
3. Create a basic cartesian coordinate system with custom ticks and labels.
$('.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. Add data (points and functions) to the cartesian coordinate system.
$('.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. The plugin also allows the user to add custom using the smartGraph.click event.
$('.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. All default options to customize the graph.
```
$('.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 methods.
// up<a href="https://www.jqueryscript.net/time-clock/">date</a> 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');
This awesome jQuery plugin is developed by oplaner4. For more Advanced Usages, please check the demo page or visit the official website.
Smart Math Graph Examples
Generate graphs and diagrams representing data or values in an organized manner, such as graph of a function.
1. Default options
2. Modified axises
3. Moved, changed ratio, dark theme
4. With data
5. Modified points, drawing onclick
6. Modified functions
'Web Development > JavaScript' 카테고리의 다른 글
티스토리 키보드 단축키 수정/추가 - ProcessShortcut 기능 (0) | 2021.07.17 |
---|---|
특정 페이지 및 카테고리의 HTML 구조를 변환하기 (IF조건문) (0) | 2021.07.17 |
[JavaScirpt] 자바스크립트로 오늘 날짜 출력하기 (0) | 2021.07.17 |
[JavaScript] 팝업 창 오늘 그만 보기 (0) | 2021.07.17 |
JQuery 선택자(Selector) (0) | 2021.07.17 |
JavaScript event keycode 목록 (0) | 2021.07.17 |
[JavaScript] 부드러운 스크롤 (0) | 2021.07.17 |
jQuery를 사용하여 페이지로드시 자동 클릭 단추 요소 (0) | 2021.07.17 |