时间:2021-05-28
前一段时间完成了一个数据可视化项目,由后台NodeJS+Highcharts框架进行搭建。下面分享一下整个开发过程的流程,以及使用Highcharts框架的经验。
一、数据的读取
由于数据库使用的是MySQL数据库,在NodeJS中,可以使用NodeJS中的mysql模块进行mysql数据库的相关操作,通过npm安装即可。
1.数据库基本配置
为了方便,我们最好先进行一个数据库连接的基本配置,mysql模块需要的配置信息如下:
var connection = mysql.createConnection({ host : '127.0.0.1', user : 'root', password : 'root', database : 'Your_Database', port : 3306 });tips:当我们在本地开发时,可以先将线上数据库中的数据拷贝一部分到本地,如利用php myadmin,然后通过读取本地数据进行开发。
2.数据库连接
我们可以设定,当访问到某个url后,自动建立mysql连接,代码如下:
注意这里面的验证。我们这里的项目比较简单,仅使用cookie做身份验证。当我们要建立数据库连接时,首先一定要进行身份验证,否则任何人发送请求就都可以和我们的数据库进行连接了,会造成很严重的安全隐患。
通过调用mysql中的connect方法,进行mysql数据库的连接。这里注意,数据库的连接不能并行,否则会报错。因此为了安全,我们首先必须要先判断一下当前是否已经连接了数据库,这里可以使用connection.threadId判断其是否定义,从而判断其是否已经建立连接。如果已经建立了连接,则不要再次建立连接。
3.执行查询语句
通过调用query()方法,即可处理语句查询操作,输入的内容可以是任何正确的mysql查询语句,也可以嵌套其他变量,最后只要拼接出一个字符串即可。实例如下:
router.post('/test', function (req, res, next) { var startDate = req.body.startDate; var endDate = req.body.endDate; connection.query('SELECT `date`, COUNT(DISTINCT `idea_id`) AS num, SUM(`view`) AS view, SUM(`click`) AS click, SUM(`cost`) AS cost FROM `idea_report_all` where `date` BETWEEN "' + startDate + '" AND "' + endDate + '" GROUP BY `date` ORDER BY `date` ASC', function(err, rows, fields) { if (err) throw err; var rows = calculate(rows); res.send(JSON.stringify(rows)); }); })这里我们根据获取到的开始日期和截止日期,拼接成一个query语句,查询出我们需要的数据,最后可以在回调函数中调用(rows参数),是一个数组。
最后,将这个数据反回给前台即可,前台进行数据的处理和可视化。
二、HighCharts使用
Highcharts的使用可以在官方API上查看各个方法,而且有在线演示,非常方便(推荐Highcharts中文网)。其中最麻烦的就是要绘制的图表的配置项所需要的各个参数所组成的对象。建议设定一个构造这个对象的构造器,根据传入的各个参数构造出对应需要的HighCharts配置项。因为传入的参数过多,我们要使用对象的形式进行构建。关于HighCharts框架的更多使用,将在以后博客中更新,可以先看一下下面这个构造的例子。
function greateOptions (id, text, xAxisTitle, date, yAxisTitle1, yAxisTitle2, k1,unit1, k2,unit2, series, color, tooltip) { var data = new Object(); data.chart = { renderTo: id, marginLeft: 50, marginTop: 70 }; data.colors = color; data.title = { text: text, align: "left" }; data.tooltip = { crosshairs: true, shared: true, useHTML: true, style: { padding: 10 }, headerFormat: '<table><tr><td>' + tooltip + ':</td><td>{point.key}</td></tr>', pointFormat: '<tr><td style="color: {series.color}">{series.name}: </td>' + '<td style="text-align: left"><b>{point.y}</b></td></tr>', footerFormat: '</table>' }; data.noData = { style: { fontWeight: 'bold', fontSize: '15px', color: '#303030' } }; data.lang = { noData: "正在为您加载数据......" }; data.credits = { enabled: false }; data.xAxis = { tickPosition: 'outside', title : { text: xAxisTitle || '' }, categories: date }; data.yAxis = [{ lineWidth: 1, title: { text: yAxisTitle1 || '' }, labels: { formatter: function(){ return this.value/k1 + unit1; } } },{ lineWidth: 1, opposite: true, title: { text: yAxisTitle2 || '' }, labels: { formatter: function(){ return this.value/k2 + unit2; } } }]; data.series = series; return data; }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们可以试用可视化包——Pyechart。Echarts是百度开源的一个数据可视化JS库,主要用于数据可视化。pyecharts是一个用于生成Echarts图标
前言inMap是一款基于canvas的大数据可视化库,专注于大数据方向点线面的可视化效果展示。目前支持散点、围栏、热力、网格、聚合等方式;致力于让大数据可视化变
环境搭建python3.xrequests包re包gooey包(用于可视化)代码importrequestsimportreimportosfromgooeyi
数据可视化工具有QlikView、Tableau、FineBI、QlikSense、DataFocus。 数据可视化,是关于数据视觉表现形式的科学技术研究。其
1、pyecharts介绍Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类