什么是数据可视化
数据可视化,就是将相对笼统的的数据经过可视的、交互的方式进行展现,然后形象而又直观地表达出数据包含的信息和规则。
简略来说,就是把复杂无序的数据用直观的图像展现出来,这样能够一下就能清晰的发现数据中潜藏的规则。当然啦,数据可视化,不仅仅是计算图表。本质上,任何能够借助于图形的方式展现事物原理、规则、逻辑的办法都叫数据可视化。
在开端运用数据可视化的库之前,先看看怎么一般地制作出图形
canvas
canvas是画布的意思,是html的一个标签,接下来制作一段直线
- 这儿canvas标签里设置宽高不需要写px,getContext(‘2d’)办法阐明这个画布是2d的
- beginPath() 清楚途径的内容
- moveTo() 线段的起点,lineTo()线段的终点
- stroke() 开端制作
- closePath() 起始点和结束点的坐标进行闭合
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>canvas制作直线</title>
<style>
canvas{
display: block;
border: 2px solid pink;
margin: 0 auto;
}
</style>
</head>
<body>
<canvas id="canvas" width="600" height="500">canvas</canvas>
</body>
<script>
const canvas = document.getElementById('canvas')
const ctx = canvas.getContext('2d')
ctx.beginPath()
// 起点 终点
ctx.moveTo(100,100)
ctx.lineTo(300,300)
// 开端制作
ctx.stroke()
ctx.closePath()
</script>
</html>
效果:
假如想改动线段的粗细,设置lineWidth特点,改动线段色彩,设置strokeStyle特点:
ctx.lineWidth = 10
ctx.strokeStyle = 'red'
折线的制作只需要在后面再加一个点:
ctx.moveTo(100,100)
ctx.lineTo(300,300)
ctx.lineTo(500,200)
这儿只是了解一下根本的运用,能够看出自己写的话比较麻烦,这时运用一个echarts库,这个库中现已包含了canvas烘托器
ECharts
怎么运用呢?
- 下载echart.js,创建一个html文件,并引进这个js文件,我这儿引进的是echarts.min.js,创建一个div
<body>
<!-- 为 ECharts 准备一个界说了宽高的 DOM -->
<div id="main" style="width: 600px;height:400px; border: 5px solid black;"></div>
</body>
<script src="./echarts.min.js"></script>
- 然后就能够经过 echarts.init 办法初始化一个 echarts 实例并经过setOption 办法生成一个简略的柱状图,下面是完整代码
<script>
// 根据准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的装备项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data: ['销量']
},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [
{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
// 运用刚指定的装备项和数据显示图表。
myChart.setOption(option);
</script>
效果图:
这儿就运用echarts完成了一个柱状图
echarts官网:echarts.apache.org/zh/index.ht…
里边有详细的运用办法,和许多例图的实现代码,能够直接拿来用,在详细的项目中运用时修改坐标轴的数据
以下是在我的项目中运用的例子:
- 首要观察例图的代码:
data数组中的数据就是饼图的数据,包含数据名字和数量比重,所以需要拿到数据库中的数据来替换这儿的data
- 在echarts.js文件中写一个路由,获取数据库的数据
router.get("/bars", (req, res) => {
const sql = `SELECT COUNT(*) AS count, nc_name FROM news,news_cate WHERE news.nc_id = news_cate.nc_id AND news.news_is_delete = '0' GROUP BY news.nc_id`
db.query(sql, (err, results) => {
if (err) return res.send({ code: 0, msg: err.message })
if (results != 0) {
// console.log(results);
res.send({
code: 1,
// 把结果send出去,改名为data
data: results
})
}
})
})
- 运用ajax请求数据,这儿封装了一个烘托数据的函数randerNew
部分html
<div class="layui-col-lg4 layui-col-md4 layui-col-sm4 ayui-col-xs4">
<div class="layui-card">
<div class="layui-card-header">新闻计算</div>
<div class="layui-card-body">
<div class="new">
</div>
</div>
</div>
</div>
function renderNew(data) {
var myChart = echarts.init(document.querySelector('.new'));
window.onresize = function () {
myChart.resize();
};
myChart.setOption({
title: {
text: 'Referer of a Website',
subtext: 'Fake Data',
left: 'center',
show: false
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: '新闻计算',
type: 'pie',
radius: ['40%', '50%'],
// 这儿的data是send出来的数据
data: data,
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
});
}
//新闻计算
$.ajax({
type: "GET",
url: "/admin/echarts/bars",
success: (res) => {
// console.log(res);
if (res.code == 1) {
res.data.forEach(item => {
item.value = item.count
item.name = item.nc_name
delete item.count
delete item.nc_name
})
// console.log(res.data);
renderNew(res.data)
}
}
})
- 效果如下:
其他例图的运用办法类似