uni-app引用echarts

uni-app引用echarts1 首先在 uni app 中不支持包下载所以得自己先新建一个项目 然后进入到这个目录下 执行 npminit 接下来一路回车即可 2 下载所需要的库 npminstallec echartssave3 引用 5 是页面代码 importechart components echarts echarts vue 下面的是 echarts vue 的代码 代码里 script src static echarts min

目录

3.引用(5是页面代码)

 下面的是 echarts.vue的代码 、

代码里script.src = ‘./static/echarts.min.js’   (更改路径不行的话,还是建议使用此路径) 在【4里面】

4.echarts.min.js   代码 (下载如果C币不够可以私信或者留言我给调整下【本来是不要C币的系统自动加币俺也没办法】)

 5.随便起一个Vue页面 复制下面代码

demo下载地址 (下载如果C币不够可以私信或者留言我给调整下)


uni-app引用echartsuni-app引用echarts

(不支持小程序【支持app和H5】) 

1.首先在uni-app中不支持包下载所以得自己先新建一个项目,然后进入到这个目录下,执行 npm init,接下来一路回车即可。

2.下载所需要的库 

npm install echarts mpvue-echarts --save 

3.引用(5是页面代码)

import echarts from '@/components/echarts/echarts.vue';

 下面的是 echarts.vue的代码   您可以在components 创建一个echarts的文件夹里面放echarts.vue

代码里script.src = ‘./static/echarts.min.js’   (更改路径不行的话,还是建议使用此路径) 在【4里面】

<template> <view> <view class="echarts" :prop="option" :change:prop="echarts.update"></view> </view> </template> <script> export default { name: 'Echarts', props: { option: { type: Object, required: true } } } </script> <script module="echarts" lang="renderjs"> export default { data() { return { chart: null } }, mounted() { if (typeof window.echarts === 'object') { this.init() } else { // 动态引入类库 const script = document.createElement('script') script.src = './static/echarts.min.js' // script.src = './static/echarts/echarts.min.js' script.onload = this.init document.head.appendChild(script) } }, methods: { / * 初始化echarts */ init() { this.chart = echarts.init(this.$el) this.update(this.option) }, / * 监测数据更新 * @param {Object} option */ update(option) { if (this.chart) { // 因App端,回调函数无法从renderjs外传递,故在此自定义设置相关回调函数 if (option) { // tooltip if (option.tooltip) { // 判断是否设置tooltip的位置 if (option.tooltip.positionStatus) { option.tooltip.position = this.tooltipPosition() } // 判断是否格式化tooltip if (option.tooltip.formatterStatus) { option.tooltip.formatter = this.tooltipFormatter(option.tooltip.formatterUnit, option.tooltip.formatFloat2, option.tooltip.formatThousands) } } // 设置新的option this.chart.setOption(option, option.notMerge) } } }, / * 设置tooltip的位置,防止超出画布 */ tooltipPosition() { return (point, params, dom, rect, size) => { //其中point为当前鼠标的位置,size中有两个属性:viewSize和contentSize,分别为外层div和tooltip提示框的大小 let x = point[0] let y = point[1] let viewWidth = size.viewSize[0] let viewHeight = size.viewSize[1] let boxWidth = size.contentSize[0] let boxHeight = size.contentSize[1] let posX = 0 //x坐标位置 let posY = 0 //y坐标位置 if (x < boxWidth) { //左边放不开 posX = 5 } else { //左边放的下 posX = x - boxWidth } if (y < boxHeight) { //上边放不开 posY = 5 } else { //上边放得下 posY = y - boxHeight } return [posX, posY] } }, / * tooltip格式化 * @param {Object} unit 数值后的单位 * @param {Object} formatFloat2 是否保留两位小数 * @param {Object} formatThousands 是否添加千分位 */ tooltipFormatter(unit, formatFloat2, formatThousands) { return params => { let result = '' unit = unit ? unit : '' for (let i in params) { if (i == 0) { result += params[i].axisValueLabel } let value = '--' if (params[i].data !== null) { value = params[i].data // 保留两位小数 if (formatFloat2) { value = this.formatFloat2(value) } // 添加千分位 if (formatThousands) { value = this.formatThousands(value) } } // #ifdef H5 result += '\n' + params[i].seriesName + ':' + value + ' ' + unit // #endif // #ifdef APP-PLUS result += '<br/>' + params[i].marker + params[i].seriesName + ':' + value + ' ' + unit // #endif } return result } }, / * 保留两位小数 * @param {Object} value */ formatFloat2(value) { let temp = Math.round(parseFloat(value) * 100) / 100 let xsd = temp.toString().split('.') if (xsd.length === 1) { temp = (isNaN(temp) ? '0' : temp.toString()) + '.00' return temp } if (xsd.length > 1) { if (xsd[1].length < 2) { temp = temp.toString() + '0' } return temp } }, / * 添加千分位 * @param {Object} value */ formatThousands(value) { if (value === undefined || value === null) { value = '' } if (!isNaN(value)) { value = value + '' } let re = /\d{1,3}(?=(\d{3})+$)/g let n1 = value.replace(/^(\d+)((\.\d+)?)$/, function(s, s1, s2) { return s1.replace(re, '$&,') + s2 }) return n1 } } } </script> <style lang="scss" scoped> .echarts { width: 100%; height: 100%; } </style>

4.echarts.min.js   代码 (下载如果C币不够可以私信) 建议放到static里面

下面这是在gitee上面的自行下载

梦寻汝/uni-app引用echarts.min

echarts.min.js_uniappecharts-其它文档类资源-CSDN下载

 5.随便起一个Vue页面 复制下面代码

<template> <view class="viewimg"> <view> <view>echarts示列</view> <echarts :option="option" style="height: 300px;"></echarts> <button @click="updateClick">更新数据</button> </view> <view><echarts :option="optionone" style="height: 400px;"></echarts></view> <view><echarts :option="optiontwo" style="height: 400px;"></echarts></view> </view> </template> <script> import echarts from '@/components/echarts/echarts.vue'; export default { data() { return { option: {}, optionone:{}, optiontwo:{} }; }, onLoad() { console.log(); }, components: { echarts }, mounted() { this.logstatrt(); this.logstatrtone(); this.logstatrttwo(); }, methods: { logstatrt() { console.log('初次调用'); this.option = { backgroundColor: '#011246', tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' } }, grid: { top: '25%', right: '45', bottom: '20', left: '30' }, legend: { data: [{ name: '人保' }, { name: '太保' }, { name: '平安' }, { name: '人保增速' }, { name: '太保增速' }, { name: '平安增速' }], top: '0%', textStyle: { color: 'rgba(255,255,255,0.9)' //图例文字 } }, dataZoom: [ { type: 'slider', realtime: true, //移动端展示方式 handleSize: '100%', //滑动条两侧的大小 start: 0, end: 50 } ], grid: { left: '3%', right: '4%', bottom: '15%', height: '70%', containLabel: true }, xAxis: [ { type: 'category', data: ['2015', '2016', '2017', '2018', '2019'], axisLine: { lineStyle: { color: 'rgba(255,255,255,.1)' } }, axisLabel: { textStyle: { color: 'rgba(255,255,255,.7)', fontSize: '14' } } } ], yAxis: [ { type: 'value', name: '单位万', splitLine: { show: false }, axisLabel: { show: true, fontSize: 14, color: 'rgba(255,255,255,.6)' }, axisLine: { min: 0, max: 10, lineStyle: { color: 'rgba(255,255,255,.4)' } } //左线色 }, { type: 'value', name: '增速', show: true, axisLabel: { show: true, fontSize: 14, formatter: '{value} %', color: 'rgba(255,255,255,.6)' }, axisLine: { lineStyle: { color: 'rgba(255,255,255,.4)' } }, //右线色 splitLine: { show: true, lineStyle: { color: 'rgba(255,255,255,.1)' } } //x轴线 } ], series: [ { name: '人保', type: 'bar', data: [35, 36.6, 38.8, 40.84, 41.6], // "barWidth": "30", itemStyle: { normal: { color: { type: 'linear', x: 0.5, y: 0.5, r: 0.5, colorStops: [ { offset: 0, color: '#00FFE3' // 0% 处的颜色 }, { offset: 1, color: '#4693EC' // 100% 处的颜色 } ], globalCoord: false // 缺省为 false } } } // "barGap": "0.2" }, { name: '太保', type: 'bar', data: [16, 14.8, 14.1, 15, 16.3], color: { type: 'linear', x: 0.5, y: 0.5, r: 0.5, colorStops: [ { offset: 0, color: '#248ff7' // 0% 处的颜色 }, { offset: 1, color: '#6851f1' // 100% 处的颜色 } ], globalCoord: false // 缺省为 false } }, { name: '平安', type: 'bar', data: [10.2, 9.2, 9.1, 9.85, 8.9], color: { type: 'linear', x: 0.5, y: 0.5, r: 0.5, colorStops: [ { offset: 0, color: '#fccb05' // 0% 处的颜色 }, { offset: 1, color: '#f5804d' // 100% 处的颜色 } ], globalCoord: false // 缺省为 false } }, { name: '人保增速', type: 'line', yAxisIndex: 1, data: [0, 6.01, 5.26, 1.48], lineStyle: { normal: { width: 2 } }, itemStyle: { normal: { color: '#86d370' } }, smooth: true }, { name: '太保增速', type: 'line', yAxisIndex: 1, data: [0, -4.73, 6.38, 8.67], lineStyle: { normal: { width: 2 } }, itemStyle: { normal: { color: '#3496f8' } }, smooth: true }, { name: '平安增速', type: 'line', yAxisIndex: 1, data: [0, -1.09, 8.24, -9.64], lineStyle: { normal: { width: 2 } }, itemStyle: { normal: { color: '#fbc30d' } }, smooth: true } ] }; }, logstatrtone(){ this.optionone = { backgroundColor: '#0c1e55', color: ['#00a0fc', '#ffe400', '#ff9a09', '#ef1e5f','#23cbe5', '#ec561b', '#ffa500', '#dddf00', '#b23aee', '#50b332'], tooltip: { trigger: 'item', // formatter: " {a} <br/>{b} : {c} ({d}%)" formatter: " 企业数:{c}" }, legend: { // 图例-图上面的分类 // orient: 'vertical', // right: 30, // icon: 'rect',//长方形 icon: 'circle', top: "1%", itemWidth: 10, itemHeight: 10, // itemGap: 13, data: ['16℃以下', '16-18℃', '18-20℃', '20-22℃','22-24℃','24-26℃','26℃以上' ], // right: '56%', textStyle: { fontSize: 14, color: '#a6cde8', lineHeight: 49 }, formatter: function(name) { return "" + name + "" }, padding: [2, 2] }, grid: { top: '20%', left: '53%', right: '10%', bottom: '6%', containLabel: true }, series: [{ label: { normal: { formatter: '{b|{b}:} {c} \n {per|{d}%} ', rich: { } }, emphasis: { show: true, } }, // labelLine: { // normal: { // show: false // } // }, name: '访问来源', type: 'pie', radius: '55%', center: ['50%', '60%'], data:[{ value: 195, name: '16℃以下' }, { value: 185, name: '16-18℃' }, { value: 260, name: '18-20℃' }, { value: 213, name: '20-22℃' }, { value: 52, name: '22-24℃' }, { value: 35, name: '24-26℃' }, { value: 46, name: '26℃以上' }, ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } }, labelLine: { normal: { length: 5, length2: 1, smooth: true, } }, }] }; }, logstatrttwo(){ var m2R2Data = [{ value: 335, value1: 234, legendname: 'Ⅰ类', name: "Ⅰ类", itemStyle: { color: "#8d7fec" } }, { value: 310, value1: 314, legendname: 'Ⅱ类', name: "Ⅱ类", itemStyle: { color: "#5085f2" } }, { value: 234, value1: 235, legendname: 'Ⅲ类', name: "Ⅲ类", itemStyle: { color: "#e75fc3" } }, { value: 154, value1: 213, legendname: 'Ⅳ类', name: "Ⅳ类", itemStyle: { color: "#f87be2" } }, { value: 335, value1: 321, legendname: 'Ⅴ类', name: "Ⅴ类", itemStyle: { color: "#f2719a" } }, ]; this.optiontwo = { title: [{ text: '全网调控情况', textStyle: { fontSize: 16, color: "black" }, left: "35%" }, { text: '全网均温', subtext: 44.5 + '℃', textStyle: { fontSize: 15, color: "black" }, subtextStyle: { fontSize: 20, color: 'black' }, textAlign: "center", x: '40%', y: '44%', } ], tooltip: { trigger: 'item', formatter: function(parms) { var str = parms.seriesName + "</br>" + parms.marker + "" + parms.data.legendname + "</br>" + "当前温度:" + parms.data.value + "</br>" + "目标温度:" + parms.data.value1 + "</br>" + "占比:" + parms.percent + "%"; return str; } }, legend: { type: "scroll", orient: 'vertical', left: '80%', align: 'left', top: 'middle', textStyle: { color: '#8C8C8C' }, }, series: [{ name: '全网调控情况', type: 'pie', center: ['40%', '50%'], radius: ['40%', '65%'], clockwise: false, //饼图的扇区是否是顺时针排布 avoidLabelOverlap: false, itemStyle: { //图形样式 normal: { borderColor: '#ffffff', borderWidth: 1, }, }, label: { normal: { show: true, position: 'outter', formatter: function(parms) { return parms.data.legendname } } }, labelLine: { normal: { length: 15, length2: 13, smooth: true, } }, data: m2R2Data }] }; }, / * 更新数据 */ updateClick() { this.option = { notMerge: true, // 自定义变量:true代表不合并数据,比如从折线图变为柱形图则需设置为true;false或不写代表合并 xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [ { data: [120, 200, 150, 80, 70, 110, 130], type: 'bar', showBackground: true, backgroundStyle: { color: 'rgba(220, 220, 220, 0.8)' } } ] }; } } }; </script> <style> .viewimg { height: 100%; /* background: #d1e9e9; */ } </style> 

demo下载地址 下载如果C币不够可以私信或者留言我给demo

 uni-app引用echarts-Demo.rar_echartsuniapp,uni-app引入echarts-其它文档类资源-CSDN下载

若按照文档仍没有弄出来加:  加的时候备注下 

如有帮助请点个赞呗

放到子组件里面可以 但是 页面要是有很多的echarts的话 建议 在传点击参数判断下(子组件加点击事件我这么没有测试成功)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231748.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Centos7安装Mysql5.7最全教程[通俗易懂]

    Centos7安装Mysql5.7最全教程[通俗易懂]最近需要在Linux系统上使用MySQL,记录一下安装过程吧,为后来的同学排除一些问题。更新yumyumupdate-y1.安装wget工具我安装到了/export/install这里可以进入你们所想要安装的地方cd/先进入你想安装的位置,此后全部在此文件夹进行操作。sudoyuminstall-ywget2.使用wget下载mysqlyum源:wgethttps://dev.mysql.com/get/mysql80-community-release-el

    2022年5月2日
    87
  • vue引入外部js文件并使用_为什么vue不使用ajax

    vue引入外部js文件并使用_为什么vue不使用ajax在一个组件内部需要引入一个js文件,如果放在index.html,每个组件都会有这个js,所以需要在组件内单独引入。下载静态文件下来后,放入文件夹:组件代码:<template><div><button@click=”compressImage”>点击调用方法</button></div></template><script>importImageCompressorfrom’@/

    2022年10月8日
    2
  • Django安装教程_怎样安装ubuntu安装教程

    Django安装教程_怎样安装ubuntu安装教程第二步:安装django这一步由于网络问题可能会出现连接超时报错,只能重试:第三步:测试效果第四步:创建Django项目启动Web服务启动时会提示如下错如:解决办法:再运行就不会报错了。以上显示就是正常运行了,我们可以访问测试一下:返回状态码200表示成功!!!或者通过浏览器访问:参考:https://docs.djangoproject.com/en/4.0/intro/install/上一课1.1Docker安装Django下一课1.3完成一个简单的Demo

    2025年10月4日
    6
  • 盘点开发中那些常用的MySQL优化

    盘点开发中那些常用的MySQL优化

    2022年2月15日
    32
  • 远程打开另一台电脑硬盘

    远程打开另一台电脑硬盘

    2021年8月7日
    55
  • 游戏手机平台简单介绍

    游戏手机平台简单介绍由于手机游戏市场的巨大潜力和无限商机,许多厂商纷纷推出功能强大的手机并提供开放应用平台,而相关手机游戏开发商也是相继投入,与手机厂商或运营商者合作,推出各种跨平台的解决方案。从最早的内嵌式游戏到最新的3D游戏基于各种技术和平台的手机游戏也是分类繁多,为了让读者更好了解各个游戏平台的特点和主要功能,我们将通过下文对目前市面上流行的手机游戏平台做一个简单的介绍。嵌入/内置式游戏

    2022年6月9日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号