本文目录一览:
- 1、如何用JavaScript获取WebViewString并用ECharts的库绘制折线图?
- 2、使用js绘图(折线图,柱状图,饼状图),若同时制作多张图,速度比较慢,如何解决
- 3、需要用js做一个折线图,纯js,不包含jquery,哪位大神有源码,会知道怎么弄,请告知,不剩感谢
- 4、html怎么用js特效做折线图
如何用JavaScript获取WebViewString并用ECharts的库绘制折线图?
做金融类型的应用经常会用到数据的统计报表 诸如折线图 , K线图, 饼状图,柱状图 既能形象的表述数据的分布 , 同时又增加了数据的可读性
实现思路: 百度Echarts支持安卓移动端的运用 , WebView加载html, 嵌套JavaScript代码 , 即可动态实现在线图表的展示功能..
下面展示下今天要实现的效果
进入Echarts官网下载页 可以选择自己需要的图表类型 自定义下载js文件 , 精简版,常用版, 完整版 根据需求自定义下载
导入刚下载的图表构建工具 echarts.min.js 到安卓项目的 资产目录(assets)下 这里我使用的 完整版
创建 Htm l文件 , 即要展示的网页 , 文件名自定义 这里我是 myechart.html
我的assets目录结构如下:
接下来就是html文件的代码了 首先我们为ECharts准备一个具备大小(宽高) 的 DOM 并取别名
div id="main" style="float: left; width: 600px;height:500px; margin-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 = 1; i obj.steps.length; i++){
if (obj.steps[i] min){
min = obj.steps[i];
}
}
return min;
}
//获取数组最大值
function getMaxValue(obj){
var max = obj.steps[0];
for (var i = 1; i obj.steps.length; i++){
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);
}
使用js绘图(折线图,柱状图,饼状图),若同时制作多张图,速度比较慢,如何解决
就不要用js。js只能控制div层达到效果~这样会需要生产很多div块,不过应该也不会很慢,估计是你代码的问题。你可以用jsp或者php实现啊
需要用js做一个折线图,纯js,不包含jquery,哪位大神有源码,会知道怎么弄,请告知,不剩感谢
这个功能不是不能实现,但是我非常疑惑楼主为什么不用JQuery?如果是纯JS做的话,那工作量相当的大,一般在这种地方以积分的形式,几乎没有人会花数个小时给你去做这个东西的。现在这种折线图有成熟的插件或者代码,但是你可以去拆一下他们的插件包,里面还一定有个JQuery的文件。
如果真的非常需要,请去CSTO上以现金报酬的方式招标吧。
给你个思路吧,如果想在页面上画图,现在首选考虑到的是HTML5的Canvas功能。非常好用,顺便上个代码包吧,这个里面有个不错的折线图和饼图的示例,只能帮你这么多了
html怎么用js特效做折线图
使用原生js自己写或js库(框架)都是可以的,由于目前HTML5并不是所有的浏览器都完美支持,使用兼容性比较好的js库是个不错的选择。
例如Highcharts图标库就可以实现各类曲线图、折线图、区域图、3D图、柱状图等等。具体使用参考:。
Highcharts中做折线图的demo代码可以作为参考:
html lang="en"
head
script type="text/javascript" src=""/script
script type="text/javascript" src=""/script
script type="text/javascript" src=""/script
script
$(function () {
$('#container').highcharts({
chart: {
type: 'line'
},
title: {
text: 'Monthly Average Temperature'
},
subtitle: {
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 +'/bbr/'+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:700px;height:400px"/div
/body
/html