html怎么用js特效做折线图?

JavaScript08

html怎么用js特效做折线图?,第1张

使用原生js自己写或js库(框架)都是可以的,由于目前HTML5并不是所有的浏览器都完美支持,使用兼容性比较好的js库是个不错的选择。

例如Highcharts图标库就可以实现各类曲线图、折线图、区域图、3D图、柱状图等等。具体使用参考:http://www.hcharts.cn/demo/index.php。

Highcharts中做折线图的demo代码可以作为参考:

<html lang="en">

<head>

<script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js">

</script>

<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/highcharts.js">

</script>

<script type="text/javascript" src="http://cdn.hcharts.cn/highcharts/exporting.js">

</script>

<script>

$(function () {

$('#container').highcharts({

chart: {

type: 'line'

},

title: {

text: 'Monthly Average Temperature'

},

ubtitle: {

text: 'Source: WorldClimate.com'

},

xAxis: {

categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

},

yAxis: {

title: {

text: 'Temperature (°C)'

}

},

tooltip: {

enabled: false,

formatter: function() {

return '<b>'+ this.series.name +'</b><br/>'+this.x +': '+ this.y +'°C'

}

},

plotOptions: {

line: {

dataLabels: {

enabled: true},

enableMouseTracking: false

}

},

series: [{

name: 'Tokyo',

data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]

}, {

name: 'London',

data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]

}]

})

})

</script>

</head>

<body>

<div id="container" style="min-width:700pxheight:400px"></div>

</body>

</html>

html中如何用js实现提交表单

办法1.同一个页面中建立两个表单 各自提交:

<form action="?" name="form1" id="form1">

<!-- 表单内容 -->

<input type="submit" />

</form>

<form action="?" name="form1" id="form1">

<!-- 表单内容 -->

<input type="submit"  />

</form>

办法2:如果非要只有一个表单的话,通过js提交:

<script type="text/javascript" language="javascript">

function submitYouFrom(path){

$('form1').action=path

$('form1').submit()

}

</script>

<form action="?" name="form1" id="form1">

<!-- 表单内容 -->

<input type="button" value="提交1" onclick="submitYouFrom('地址一')"/>

<input type="button" value="提交2" onclick="submitYouFrom('地址二')"/>

</form>

做金融类型的应用经常会用到数据的统计报表 诸如折线图 ,  K线图, 饼状图,柱状图  既能形象的表述数据的分布 , 同时又增加了数据的可读性

实现思路: 百度Echarts支持安卓移动端的运用 , WebView加载html, 嵌套JavaScript代码 , 即可动态实现在线图表的展示功能..

下面展示下今天要实现的效果

进入Echarts官网下载页 可以选择自己需要的图表类型 自定义下载js文件 , 精简版,常用版, 完整版 根据需求自定义下载

导入刚下载的图表构建工具   echarts.min.js  到安卓项目的 资产目录(assets)下 这里我使用的 完整版

创建 Htm l文件 , 即要展示的网页 ,  文件名自定义 这里我是 myechart.html

我的assets目录结构如下:

接下来就是html文件的代码了 首先我们为ECharts准备一个具备大小(宽高) 的 DOM 并取别名

<div id="main" style="float: leftwidth: 600pxheight:500pxmargin-top: 20px"></div>

导入图表构建工具

<script src="js/echarts.min.js"></script>

因为我这里要展示多种类型的图表 所以定义了几个方法  下面以折线图为例

var lineJson//用于临时存储折线图json对象, 便于追加数据

//创建折线图

function createLineChart(obj){

lineJson=obj

options = {

title : {

//text: '脉搏值(次/min)',

text: obj.title,

subtext: 'make by sxt',

x:'left'

},

tooltip: {

trigger: 'axis',

formatter: "脉搏频率 : <br/>{b} - {c} 次/min"

},

xAxis: {

id: 'dataX',

type: 'category',

splitLine:{

show:true

},

axisLabel: {

//formatter: '{value} °C'

formatter: '{value}'

},

data: obj.times //动态展示运动时间

},

yAxis: {

type: 'value',

axisLine: {onZero: true},

splitLine:{

show:true

},

axisLabel: {

//formatter: '{value} km'

formatter: '{value}'

},

min:0,

max:150//在此设置范围

},

dataZoom: [

{

id:'dataZoom',

show:false,

type: 'inside',//inside 为拖动效果

//type: 'slider',//slider为手动更新效果

realtime: true,

filterMode: 'filter',

start: 20,

end: 85,

xAxisIndex: 0

}

],

series: [{

id: 'dataY',

name: '脉搏频率(次)/(s)',

type: 'line',

smooth: true,

data: obj.steps, //动态展示运动步数数据

lineStyle: {

normal: {

width: 3,

shadowColor: 'rgba(0,0,0,0.4)',

shadowBlur: 10,

shadowOffsetY: 10

}

},

markPoint : {//标注点

data : [//这种方式内部自动计算最值

{

type :'max'  ,

name:'最大值' ,

symbol:'image://' + treeUrl,

symbolSize: [30, 30]

},

{

type : 'min',

name: '最小值',

symbol:'image://' + childUrl,

symbolSize: [30, 30]

}

]

},

markLine : {

data : [ {type : 'average', name: '平均值'} ]

}

}]

}

}

//更新折线图的缩放起始位置

function updateZoomState(start,end){

myChart.setOption({

dataZoom: [{

id: 'dataZoom',

start: start,

end: end

}]

})

}

//获取数组最小值

function getMinValue(obj){

var min = obj.steps[0]

for (var i = 1i <obj.steps.lengthi++){

if (obj.steps[i] <min){

min = obj.steps[i]

}

}

return min

}

//获取数组最大值

function getMaxValue(obj){

var max = obj.steps[0]

for (var i = 1i <obj.steps.lengthi++){

if (obj.steps[i] >max) {

max = obj.steps[i]

}

}

return max

}

//更新折线图数据 继续在后面追加数据

function updateDataXY(dataX,dataY){

myChart.setOption({

xAxis: {

id: 'dataX',

data:lineJson.times.concat(dataX)

},

series:[{

id: 'dataY',

data:lineJson.steps.concat(dataY)

}],

dataZoom: [{

id: 'dataZoom',

start: 60,

end: 100

}]

})

}

展示图表

//显示图表

function createChart(type,json){

if(type=='line'){

createLineChart(json)

}

if(type=='bar'){

createBarChart(json)

}

if(type=='pie'){

createPieChart(json)

}

if(type=='more'){

createMoreChart()

}

// 基于准备好的dom,初始化echarts实例

myChart = echarts.init(document.getElementById('main'))

//使用指定的配置项和数据显示图表。

myChart.setOption(options)

}

引入ECharts

echarts提供多种引入方式,请根据你的项目类型选择合适的方式:

模块化包引入

如果你熟悉模块化开发,你的项目本身就是模块化且遵循AMD规范的,那引入echarts将很简单,使用一个符合AMD规范的模块加载器,如esl.js,只需要配置好packages路径指向src即可,你将享受到图表的按需加载等最大的灵活性,由于echarts依赖底层zrender,你需要同时下载zrender到本地,可参考demo,你需要配置如下。

需要注意的是,包引入提供了开发阶段最大的灵活性,但并不适合直接上线,减少请求的文件数量是前端性能优化中最基本但很重要的规则,务必在上线时做文件的连接压缩。

//from echarts example

require.config({

packages: [

{

name: 'echarts',

location: '../../src',

main: 'echarts'

},

{

name: 'zrender',

location: '../../../zrender/src', // zrender与echarts在同一级目录

main: 'zrender'

}

]

})

模块化单文件引入(推荐)

如果你使用模块化开发但并没有自己的打包合并环境,或者说你不希望在你的项目里引入第三方库的源文件,我们建议你使用单文件引入,同模块化包引入一样,你需要熟悉模块化开发。

自2.1.8起,我们为echarts开发了专门的合并压缩工具echarts-optimizer。如你所发现的,build文件夹下已经包含了由echarts-optimizer生成的单文件:

dist(文件夹) : 经过合并、压缩的单文件

line.js : 折线图(如需折柱动态类型切换,require时还需要echarts/chart/bar)

bar.js : 柱形图(如需折柱动态类型切换,require时还需要echarts/chart/line)

scatter.js : 散点图

k.js : K线图

pie.js : 饼图(如需饼漏斗图动态类型切换,require时还需要echarts/chart/funnel)

radar.js : 雷达图

map.js : 地图

force.js : 力导向布局图(如需力导和弦动态类型切换,require时还需要echarts/chart/chord)

chord.js : 和弦图(如需力导和弦动态类型切换,require时还需要echarts/chart/force)

funnel.js : 漏斗图(如需饼漏斗图动态类型切换,require时还需要echarts/chart/pie)

gauge.js : 仪表盘

eventRiver.js : 事件河流图

treemap.js : 矩阵树图

venn.js : 韦恩图

echarts.js : 这是包含AMD加载器的echarts主文件,需要通过script最先引入

chart(文件夹) : echarts-optimizer通过依赖关系分析同时去除与echarts.js的重复模块后为echarts的每一个图表类型单独打包生成一个独立文件,根据应用需求可实现图表类型按需加载

source(文件夹) : 经过合并,但并没有压缩的单文件,内容同dist,可用于调试

采用单一文件使用例子见ECharts单一文件引入,存放在example/www下,首先你需要通过script标签引入echarts主文件

//from echarts example

<body>

   <div id="main" style="height:400px"></div>

   ...

   <script src="./js/echarts.js"></script>

</body>

在主文件引入后你将获得一个AMD环境,配置require.conifg如下:

//from echarts example

<body>

   <div id="main" style="height:400px"></div>

   ...

   <script src="./js/echarts.js"></script>

   <script type="text/javascript">

       require.config({

           paths: {

               echarts: './js/dist'

           }

       })

   </script>

</body>

require.config配置后就可以通过动态加载使用echarts

//from echarts example

<body>

   <div id="main" style="height:400px"></div>

   ...

   <script src="./js/echarts.js"></script>

   <script type="text/javascript">

       require.config({

           paths: {

               echarts: './js/dist'

           }

       })

       require(

           [

               'echarts',

               'echarts/chart/line',   // 按需加载所需图表,如需动态类型切换功能,别忘了同时加载相应图表

               'echarts/chart/bar'

           ],

           function (ec) {

               var myChart = ec.init(document.getElementById('main'))

               var option = {

                   ...

               }

               myChart.setOption(option)

           }

       )

   </script>

</body>

总结来说,模块化单文件引入ECharts,你需要如下4步:

为ECharts准备一个具备大小(宽高)的Dom(当然可以是动态生成的)

通过script标签引入echarts主文件

为模块加载器配置echarts的路径,从当前页面链接到echarts.js所在目录,见上述说明

动态加载echarts及所需图表然后在回调函数中开始使用(容我罗嗦一句,当你确保同一页面已经加载过echarts,再使用时直接require('echarts').init(dom)就行)

详见入门教程 ( Getting started ) »

标签式单文件引入

自1.3.5开始,ECharts提供标签式引入。如果你的项目本身并不是基于模块化开发的,或者是基于CMD规范(如使用的是seajs),那么引入基于AMD模块化的echarts可能并不方便,我们建议你采用srcipt标签式引入,忘掉require。Srcipt标签引入echarts后将可以直接使用两个全局的命名空间:echarts,zrender,可参考ECharts标签式引入,需要注意的是excanvas依赖body标签插入Canvas节点去判断Canvas的支持,如果你把引用echarts的script标签放置head内在IE8-的浏览器中会出现报错,解决的办法就是把标签移动到body内(后)。

标签式引入环境中,常用模块的引用可通过命名空间直取,同模块化下的路径结构,如:

echarts.config = require('echarts/config'), zrender.tool.color = require('zrender/tool/color')

//from echarts example

<body>

   <div id="main" style="height:400px"></div>

   ...

   <script src="example/www2/js/dist/echarts-all.js"></script>

   <script>

       var myChart = echarts.init(document.getElementById('main'))

       var option = {

           ...

       }

       myChart.setOption(option)

   </script>

</body>