大家好,欢迎来到IT知识分享网。
❤ uniapp使用ucharts
1、认识ucharts
uCharts 是一个用于 Vue.js 和小程序的图表库,支持多种图表类型和交互功能。它设计用于在小程序、Web 和应用中创建高性能、精美的图表。
官方版本
uCharts特点
- 功能丰富:支持多种图表类型,如柱状图、折线图、饼图、雷达图等。 高性能:优化了图表的渲染性能,适合处理大数据量的图表。
易于集成:支持在小程序、Vue.js 等框架中使用。 交互功能:提供了图表的交互功能,如点击、缩放、滚动等。
高度定制化:提供了丰富的配置选项,允许用户根据需求定制图表的样式和功能。
2、ucharts的使用
(1)通过 npm 安装(方式一)
在 uni-app 项目中使用 uCharts,你可以通过 npm 安装
npm install ucharts
(2)安装 uCharts 插件(方式二)
使用 HBuilderX可以直接在 HBuilderX 插件市场中搜索并安装 uCharts 插件
(3)引入和使用
- 在项目的需要使用 uCharts 的页面或组件中,引入 uCharts 并初始化图表
import uCharts from 'ucharts'; export default {
data() {
return {
chart: null, }; }, methods: {
initChart() {
const chart = new uCharts({
// 配置参数 // ... }); this.chart = chart; }, }, onReady() {
this.initChart(); }, };
(4)配置基础类型
initChart() {
const chart = new uCharts({
type: 'bar', // 图表类型,例如 'bar', 'line', 'pie' canvasId: 'myChart', data: [10, 20, 30, 40], categories: ['A', 'B', 'C', 'D'], // 其他配置项 }); this.chart = chart; }
(5)在页面中使用
<template> <view> <canvas id="myChart" canvas-id="myChart" /> </view> </template>
3、Ucharts图表使用(npm下载的方式)
Y轴属性配置
yAxis: {
gridType:'dash', // gridColor:'#CCCCCC', // dashLength:10, // splitNumber:5, // data:[ {
axisLine: true, //坐标轴轴线是否显示 axisLineColor: 'blue', //坐标轴轴线颜色 } ] },
折线图
touchMoveLimit: 60, //图表拖拽每秒渲染次数
不过最后还是没有解决问题。因为数据过大的时候,尤其是超过1200条然后X轴的数据就开始卡顿了,而且Ucharts一直是开源版本,但是最近却突然开始登录了,于是就没有继续使用。
ucharts使用折线图时x轴数据过多
xAxis": { "labelCount": 4, //默认显示个数 itemCount:chartData.length //x轴数据的长度 },
颜色的改变
官方给我们默认的 color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], 修改颜色就是修改opt的颜色 opts: {
color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: [5,5,5,5], enableScroll: false, extra: {
pie: {
activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, labelWidth: 15, border: false, borderWidth: 3, borderColor: "#FFFFFF" } } }
使用注意(series 数据类型必须为Number类型)
格式类型
"Ring": {
"series": [{
"name": "一班", "data": 50 }, {
"name": "二班", "data": 30 }, {
"name": "三班", "data": 20 }, {
"name": "四班", "data": 18 }, {
"name": "五班", "data": 8 }] }
4、(插件) Uniapp使用Ucharts
(qiun-data-charts秋云组件类型)
公共样式
<style scoped> /* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */ .charts-box {
width: 100%; height: 300px; } </style>
折线图使用
this.getChartline(); //折线图
- 结构
type="area" //区域图 type="line" //折线图 <template> <view class="charts-box"> <qiun-data-charts type="area" :opts="optsline" :chartData="chartdataline" /> </view> </template>
- 数据
chartdataline: {
}, optsline:{
},
折线图详细配置
// 折线图表配置 opts: {
animation: true, // 是否动画展示图表 legend: {
show: false, // 提示关闭 }, xAxis: {
disableGrid: false, // true不绘制纵向网格 false绘制纵向网格 itemCount: 8, fontColor:'#fff' }, yAxis: {
axisLine:false, }, extra:{
line:{
type:'curve'}, tooltip:{
legendShow:true}, //区域部分 area: {
type: "straight", opacity: 0.2, addLine: true, width: 2, gradient: false, activeType: "hollow" } }, }
- 折线图滑动
1、添加:ontouch="true"
2、启用图表拖拽功能enableScroll: true
3、x轴上的scrollShow上的false改成true scrollShow: true, itemCount是x轴当前屏幕显示的个数,根据需求来定 itemCount: 8,
- 设置y轴默认间隔
完整使用
// 折线图表配置 optsline:{
// color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], animation: true, // 是否动画展示图表 legend: {
show: false, }, padding: [10, 10, 10, 10], rotate: false, //横屏模式 enableScroll: true, dataLabel: false, xAxis: {
disableGrid: true, // true不绘制纵向网格 false绘制纵向网格 itemCount: 8, fontColor: '#fff', }, yAxis: {
min: 0, // interval: 10, // 设置y轴默认间隔为10 // max: 40, axisLine: false, disabled: false, //不绘制Y轴 // disableGrid: false, //不绘制横向向网格(即默认绘制网格) fontColor: '#83B9A3', data: [ // 多Y轴配置 {
// axisLineColor: "", // 坐标轴轴线颜色,默认#CCCCCC calibration: false, // 刻度线是否显示 fontColor: "#83B9A3", // 数据点(刻度点)字体颜色,默认# fontSize: 13, // 数据点(刻度点)字体大小 // textAlign: "right", //数据点(刻度点)相对轴线的对齐方式,可选值:'left','right','center' titleFontSize: 13, // 标题字体大小 // // titleOffsetY: -5, // 标题纵向偏移距离,负数为向上偏移,正数向下偏移 // titleOffsetX: 0, // 标题横向偏移距离,负数为向左偏移,正数向右偏移 titleFontColor: "#83B9A3", //标题字体颜色,默认# // unit: "", //Y轴刻度值后附加单位 // min: 0, // 当前Y轴起始值(默认数据中的最小值) }, ], }, extra: {
line: {
type: 'curve' }, tooltip: {
legendShow: true }, area: {
type: "curve", opacity: 0.3, addLine: true, width: 2, gradient: true, activeType: "hollow" }, }, },
- 设置横向标记线
extra => markLine
markLine:{
type: 'dash', dashLength:4, data:[ {
value:100, lineColor:'red', } ], },
雷达图
- 结构
<template> <view class="charts-box"> <qiun-data-charts type="radar" :opts="opts" :chartData="chartData" /> </view> </template>
- 数据
categories: ["维度1","维度2","维度3","维度4","维度5","维度6"], series: [ {
name: "成交量1", data: [90,110,165,195,187,172] }, {
name: "成交量2", data: [190,210,105,35,27,102] } ] };
- 雷达图详细配置
<script> export default {
data() {
return {
chartData: {
}, //您可以通过修改 config-ucharts.js 文件中下标为 ['radar'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。 opts: {
color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: [5,5,5,5], dataLabel: false, enableScroll: false, legend: {
show: true, position: "right", lineHeight: 25 }, extra: {
radar: {
gridType: "circle", gridColor: "#CCCCCC", gridCount: 3, opacity: 0.2, max: 200, labelShow: true } } } }; }, onReady() {
this.getServerData(); }, methods: {
getServerData() {
//模拟从服务器获取数据时的延时 setTimeout(() => { //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接 let res = { categories: ["维度1","维度2","维度3","维度4","维度5","维度6"], series: [ { name: "成交量1", data: [90,110,165,195,187,172] }, { name: "成交量2", data: [190,210,105,35,27,102] } ] }; this.chartData = JSON.parse(JSON.stringify(res)); }, 500); }, } }; </script> <style scoped> /* 请根据实际需求修改父元素尺寸,组件自动识别宽高 */ .charts-box {
width: 100%; height: 300px; } </style>
- 雷达图legend显示
legend: {
show: false, position: "right", lineHeight: 25 },
- 雷达图背景线条
extra里面radar下的gridColor
extra: {
radar: {
radius:80, //雷达图半径 gridType: "radar", //"radar"蜘蛛网格样式,"circle"圆形背景网格 gridColor: "#BEDDFD", //雷达图网格颜色 gridCount: 5, //雷达图网格数量 opacity: 1, //主图区域透明度 labelPointShow:false, //是否显示末端刻度圆点 max: 200, labelShow: true, border: true, //是否绘制主图区域描边线 labelColor:'#', } },
圆环图
结构
<template> <view class="charts-box"> <qiun-data-charts type="ring" :opts="opts" :chartData="chartData" /> </view> </template>
配置
// 配置部分 chartData: {
}, //您可以通过修改 config-ucharts.js 文件中下标为 ['ring'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。 opts: {
rotate: false, rotateLock: false, color: ["#1890FF","#91CB74","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"], padding: [5,5,5,5], dataLabel: true, enableScroll: false, legend: {
show: true, position: "right", lineHeight: 25 }, title: {
name: "收益率", fontSize: 15, color: "#" }, subtitle: {
name: "70%", fontSize: 25, color: "#7cb5ec" }, extra: {
ring: {
ringWidth: 60, activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, labelWidth: 15, border: false, borderWidth: 3, borderColor: "#FFFFFF" } }, },
方法
this.getChartring();// 圆环图 //方法使用 getChartring() {
//模拟从服务器获取数据时的延时 setTimeout(() => { //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接 let res = { series: [ { data: [{"name":"一班","value":50},{"name":"二班","value":30},{"name":"三班","value":20},{"name":"四班","value":18},{"name":"五班","value":8}] } ] }; this.chartData = JSON.parse(JSON.stringify(res)); }, 500); },
1、圆环图legend显示
legend: {
show: false, position: "right", lineHeight: 25 },
2、圆环图环详细参数
extra里面ring下面的 ringWidth 控制粗细
extra: {
ring: {
ringWidth: 10, //圆环图环粗细 activeOpacity: 0.5, activeRadius: 10, offsetAngle: 0, labelWidth: 15, border: false, //是否绘制各类别中间的分割线 borderWidth: 3, borderColor: "#FFFFFF", linearType: "custom" } },
5、使用问题
ucharts使用注意
- 旧的版本可能不支持很多东西
未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.con
版本问题 canvaLineA=new uCharts({
//$this:_self, //canvasId: canvasId, // 加入下面这一句 context:uni.createCanvasContext(canvasId, _self), // 图标类型 type: 'line', fontSize:11, })
使用过程之中无法更换底部颜色
原因是因为在自己PUSH进去的数据里面定义了颜色 更换之后使用正常
使用过程之中无法去掉图例
正常删除最后,发现是变了 "legend": {
"show": false, "position": "bottom", "float": "center", "padding": 5, "margin": 5, "backgroundColor": "rgba(0,0,0,0)", "borderColor": "rgba(0,0,0,0)", "borderWidth": 0, "fontSize": 13, "fontColor": "#", "lineHeight": 11, "hiddenColor": "#CECECE", "itemGap": 10 }, dataLabel 是否显示图表区域内数据点上方的数据文案
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/138253.html