阅读量:7
效果图如下
以上为加载接口所得数据的玫瑰图与折线图
具体步骤如下
1,将插件导入Hbuiler 所需要的项目中(插件地址:秋云 ucharts echarts 高性能跨全端图表组件 - DCloud 插件市场)
2,导入成功是这样的
3,打开Ucharts官方地址(uCharts官网 - 秋云uCharts跨平台图表库) 各种图形应有尽有,如下
4,选择自己需要的图形,这里我用玫瑰图,折线图举例
选择喜欢的类型点击查看代码 ,支持很多app,小程序,我这里用的UNiapp 原生代码
5,复制代码到自己项目页面中,调整好css,我的代码如下
a,页面代码
<view class="echartPieClass"> <canvas canvas-id="oCwSurlEYAHlHHJgTshuROhNgUmUHblO" id="oCwSurlEYAHlHHJgTshuROhNgUmUHblO" class="charts" @touchend="tap"/> </view> <view class="echartPieClass"> <canvas canvas-id="shSXlKCaGHqXyosxTHYDuRySdVunSfAT" id="shSXlKCaGHqXyosxTHYDuRySdVunSfAT" class="charts" @touchend="tap1"/> </view>
b,js,css代码
<script> //引入插件js import uCharts from '@/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js'; var uChartsInstance = {};//玫瑰图 uChartsInstance1 = {};//折线图 export default { data() { return { pieList:[], nameList:[], pricesList:[], cWidth: 750, cHeight: 500 }; }, onReady() { this.MtypeName();//加载接口 //这里的 750 对应 css .charts 的 width this.cWidth = uni.upx2px(750); //这里的 500 对应 css .charts 的 height this.cHeight = uni.upx2px(500); }, methods: { MtypeName(){ this.$api.getTypeNameList({ }).then(res => { let list=res.result; let lists="",names="",prices=""; for(var i=0;i<list.length;i++){ if(i<list.length-1){ lists+="{"+'"name"'+":"+'"'+list[i].typename+'"'+","+'"value"'+":"+list[i].allmoney+"}"+","; names+='"'+list[i].typename+'"'+","; prices+='"'+list[i].allmoney+'"'+","; } else{ lists+="{"+'"name"'+":"+'"'+list[i].typename+'"'+","+'"value"'+":"+list[i].allmoney+"}"; names+='"'+list[i].typename+'"'; prices+='"'+list[i].allmoney+'"'; } } lists="["+lists+"]"; names="["+names+"]"; prices="["+prices+"]"; this.pieList=JSON.parse(lists); this.nameList=JSON.parse(names); this.pricesList=JSON.parse(prices); this.getServerData(); this.getServerData1(); }) }, getServerData() { //模拟从服务器获取数据时的延时 setTimeout(() => { //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接 let res = { series: [ { data: this.pieList,//[{"name":"一班","value":50},{"name":"二班","value":30},{"name":"三班","value":20},{"name":"四班","value":18},{"name":"五班","value":8}] } ] }; this.drawCharts('QQHmcQkBhELdeWwqdBQfxiWPRNZmAMaE', res); }, 500); }, drawCharts(id,data){ const ctx = uni.createCanvasContext(id, this); uChartsInstance[id] = new uCharts({ type: "rose", context: ctx, width: this.cWidth, height: this.cHeight, series: data.series, animation: true, background: "#FFFFFF", color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: [5,5,5,5], enableScroll: false, legend: { show: true, position: "left", lineHeight: 25 }, extra: { rose: { type: "area", minRadius: 50, activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, labelWidth: 15, border: false, borderWidth: 2, borderColor: "#FFFFFF" } } }); }, tap(e){ uChartsInstance[e.target.id].touchLegend(e); uChartsInstance[e.target.id].showToolTip(e); }, getServerData1() { let res = { categories:this.nameList,//["2020-12-10","2020-12-11","2020-12-12","2020-12-13","2020-12-14","2020-12-15","2020-12-16","2020-12-17","2020-12-18"], series: [ { name: "支出/收入", data:this.pricesList//[10,5,1,8,0,1,30,20,13] } ] }; this.drawCharts1('shSXlKCaGHqXyosxTHYDuRySdVunSfAT', res); }, drawCharts1(id,data){ const ctx = uni.createCanvasContext(id, this); uChartsInstance1[id] = new uCharts({ type: "line", context: ctx, width: this.cWidth, height: this.cHeight, categories: data.categories, series: data.series, animation: true, background: "#FFFFFF", color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: [15,10,0,15], enableScroll: false, legend: {}, xAxis: { disableGrid: true }, yAxis: { gridType: "dash", dashLength: 2 }, extra: { line: { type: "straight", width: 2, activeType: "hollow" } } }); }, tap1(e){ uChartsInstance1[e.target.id].touchLegend(e); uChartsInstance1[e.target.id].showToolTip(e); } } }; </script> <style scoped> .charts{ width: 750rpx; height: 500rpx; } .echartPieClass{ float: left; width: 96%; margin-left: 2%; margin-top: 20px; background-color: #fff; } </style>
所有过程就这些,非常容易上手。