微信小程序中使用Echarts展示折线图
效果图
主要实现的功能输入地区和频次查询油价的调整消息


1.从echarts-for-weixin官网下载文件

2.项目中引入echarts
将整个文件夹放在项目pages同级的目录下面

import * as echarts from '../../ec-canvas/echarts.js';
3.在微信小程序中使用
在Page.data中定义接收的数据
请求并处理数据

initpie()方法

setOption()方法 折线图配置项

ts文件
Page({
/**
* 页面的初始数据
*/
onShareAppMessage: function (res) {
return {
title: 'ECharts 可以在微信小程序中使用啦!',
path: '/pages/index/index',
success: function () { },
fail: function () { }
}
},
data: {
OliData: [],
_num: 0,
show: false,
number: 3,
area: "重庆",
color: "#f7f7fb",
ec: {
//onInit: initChart //关闭自动加载
// 将 lazyLoad 设为 true 后,需要手动初始化图表
lazyLoad: true
},
xData:[],
y89:[],
y92:[],
y95:[],
onReady() {
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad() {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
// onShareAppMessage() {
// },
setOption(chart:any,piedata:any){
var option = {
title: {
text: '油价趋势图',
left: 'center'
},
legend: {
data: ['89', '92', '95'],
top: 50,
left: 'center',
backgroundColor: '#c0ebd7',
z: 10
},
grid: {
containLabel: true
},
tooltip: {
show: true,
trigger: 'axis'
},
xAxis: {
type: 'category',
boundaryGap: false,
data:piedata[0],
// show: false
},
yAxis: {
x: 'center',
type: 'value',
splitLine: {
lineStyle: {
type: 'dashed'
}
},
min: 'dataMin' //设置最小刻度为数据中的最小值
// show: false
},
series: [{
name: '89',
type: 'line',
smooth: true,//是否是光滑的曲线
data: piedata[1]
}, {
name: '92',
type: 'line',
smooth: true,
data: piedata[2]
}, {
name: '95',
type: 'line',
smooth: true,
// data: [10, 30, 31, 50, 40, 20, 10]
data: piedata[3]
}]
};
chart.setOption(option);
return chart;
},
inittpie(echartsData:any){
//获取折线图组件
let compent= this.selectComponent('#mychart-dom-line');
compent.init((canvas, width, height, dpr)=> {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr // new
});
//调用设定EChart报表状态的函数,并且把从后端拿到的数据传过去
this.setOption(chart,echartsData);
// 注意这里一定要返回 chart 实例,否则会影响事件处理等
return chart;
})
},
OliSearch() {
var that = this;
wx.request({
url: 'https://*****=(CITYNAME="' + that.data.area + '")&pageNumber=1&pageSize=' + that.data.number + '',
header: {
'content-type': 'application/json'
},
method: 'GET',
success: function (res) {
let mu:any = [];//Table数据
var xd:any=[];//X轴数据
var y89:any=[];//y轴89号汽油数据
var y92:any=[];//y轴92号汽油数据
var y95:any=[];//y轴95号汽油数据
res.data.result.data.forEach(element => {
var de = {
area: element.CITYNAME, datetime: element.DIM_DATE.substr(0,10),
V89: element.V89, V92: element.V92, V95: element.V95
};
mu.push(de);
xd.push(element.DIM_DATE.substr(0,10));
y89.push(element.V89);
y92.push(element.V92);
y95.push(element.V95);
});
that.setData({
OliData: mu,
xData:xd,
y89: y89,
y92: y92,
y95: y95,
})
// 在这里解析数据并渲染到页面上
var da=[xd.reverse(),y89.reverse(),y92.reverse(),y95.reverse()]
//调用初始化图形的方法
that.inittpie(da);
},
fail: function (error) {
// 请求失败,处理错误
console.log(error);
}
})
},
onChange(s:any) {
console.log(s.detail)
},
onClick() {
this.setData({
show: true,
});
},
onClose() {
this.setData({
show: false,
});
},
onFinish(e) {
const { selectedOptions, value } = e.detail;
const fieldValue = selectedOptions
.map((option:any) => option.text || option.name)
.join('/');
this.setData({
fieldValue,
cascaderValue: value,
show: false
})
},
onInput(event:any) {
this.setData({
currentDate: event.detail,
});
},
})
import * as echarts from '../../ec-canvas/echarts.js';
wxml文件
<van-row>
<van-col span="24">
<van-cell-group>
<van-field model:value="{{ area }}" required clearable label="地区" placeholder="请输入地区 默认重庆" border="{{ true }}" />
<van-field model:value="{{ number }}" label="频次" placeholder="请输入调整的频次 默认3次" border="{{ true }}" />
</van-cell-group>
</van-col>
</van-row>
<van-row>
<van-col offset="10" span="8">
<van-button type="info" bind:click="OliSearch">查询</van-button>
</van-col>
</van-row>
//加载折线图
<view class="container" wx:if="{{OliData.length>0}}">
<ec-canvas style="width: 100%; height: 500px;margin-top: -100px;" id="mychart-dom-line" canvas-id="mychart-line" ec="{{ ec }}" />
</view>
json文件
"usingComponents": {
"ec-canvas": "/ec-canvas/ec-canvas"
}
感谢这两位大佬的文章指点:
微信小程序使用echarts动态获取数据
微信小程序中使用ECharts--折线图、柱状图、饼图
微信小程序中使用Echarts展示折线图的更多相关文章
- 如何在微信小程序中使用ECharts图表
在微信小程序中使用ECharts 1. 下载插件 首先,下载 GitHub 上的 ecomfe/echarts-for-weixin 项目. 下载链接:ecomfe/echarts-for-weixi ...
- 微信小程序中使用ECharts 异步加载数据 实现图表
<!--pages/bar/index.wxml--> <view class="container"> <ec-canvas id="my ...
- 在微信小程序中使用 echarts 图片-例 折线图
首先进入echarts官方[https://echarts.apache.org/handbook/zh/get-started/].这边只需要在小程序中简单应用一下echarts折线图 所以不需要把 ...
- 微信小程序中使用wxParse展示HTML内容
wxParse的GitHub地址:https://github.com/icindy/wxParse 一.数据内容: 请求地址:https://m.quanchepin.com/index.php?a ...
- 微信小程序中使用echarts
一.效果图 二.代码 import * as echarts from '../../component/ec-canvas/echarts'; const app = getApp(); var x ...
- 微信小程序中自定义swiper轮播图面板指示点的样式
重置样式: .swiper{ width: 100%; height: 240px; margin-bottom: 0.5rem; position:relative; } div.wx-swiper ...
- 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等
在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...
- 在微信小程序中使用富文本转化插件wxParse
在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片.文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个 ...
- 微信小程序中的组件使用1
不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
随机推荐
- arm linux 移植 iperf3
背景 新做的硬件需要有进行一些板级接口测试:关于网络的测试很多时候只是停留在 ping 通:能够使用就算了.不知道网络的丢包率,也不知道网络吞吐的性能. 因此,需要使用一些专业化的工具来进行测试:查阅 ...
- 动环监控方案,为什么推荐79元全志T113-i国产平台?
什么是动环监控系统? 通信电源及机房环境监控系统(简称"动环监控系统"),是对分布在各机房的电源柜.UPS.空调.蓄电池等多种动力设备,及门磁.红外.窗破.水浸.温湿度.烟感等机房 ...
- Advanced .Net Debugging 10:事后调试
一.介绍 这是我的<Advanced .Net Debugging>这个系列的第十篇文章.这篇文章的内容是原书的第三部分的[高级主题]的第八章[事后调试].前面几篇文章,我们介绍了很多工具 ...
- Spark3学习【基于Java】5. Spark-Sql联表查询JOIN
大数据场景下,联表远比微小型关系型数据库中使用的频繁.网上有句话: 传统数据库单机模式做Join的场景毕竟有限,也建议尽量减少使用Join. 然而大数据领域就完全不同,Join是标配,OLAP业务根本 ...
- gdb 根据c语言二进制文件进程号查看内部多线程任务
C语言二进制文件 a 编译时添加了 -g (gdb 调试), 但是 gdb a 这种方式有时不容易复现一些场景.这时可以先正常启动 a, 然后根据 a 的进程号启动gdb调试. # 1. 找到程序进程 ...
- VS2017 error CS0234: 命名空间“Microsoft”中不存在类型或命名空间名“Office”问题的一种解决方案
最近需要使用VS2017编辑C#,但在编译时软件报错:error CS0234: 命名空间"Microsoft"中不存在类型或命名空间名"Office" 在网上 ...
- Mysql与Redis如何保证数据的一致性?
问题分析: 当MySQL中的数据发生更新时,就面临一个问题,如何确保MySQL与Redis数据的一致性,我们有两个选择: 先更新MySQL,后删除(或更新)Redis 先删除(或更新)Redis,后更 ...
- C++使用gnuplot-cpp库绘制图像
最近想要对一些时变的变量进行可视化,搜索来搜索去选择了使用gnuplot这个工具. sudo apt-get install gnuplot sudo apt-get install gnuplot- ...
- django 信号第一个 raise ValidationError出现后,还会继续下一个if吗
在你提供的代码片段中,如果第一个 raise ValidationError 触发,会抛出异常并停止执行当前函数或代码块.这是因为异常(Exception)会中断正常的代码流程,将控制权传递给调用堆栈 ...
- C# RSA加密解密及RSA签名和验证
1.RSA加密解密 (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上读取密钥 (2)加密 (3)解密 2.RSA签名和验证 (1)获取密钥,这里是产生密钥,实际应用中可以从各种存储介质上 ...