uniapp使用ucharts图表及问题汇总



本文主要描述如何通过组件的方式引入ucharts图表,并汇总了使用过程中踩到的坑,如层级过高问题、默认显示提示框tooltip、提示框显示内容格式化等等。

一、引入资源

官方示例代码

1.引入相关组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkabOIjG-1665996803733)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/51dea54f1c3f46ef9660ff3d3bb4bd92~tplv-k3u1fbpfcp-watermark.image?)]

2.引入jdk

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DGW2OTel-1665996803734)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a898fe255c944c8880a18c81f18aa111~tplv-k3u1fbpfcp-watermark.image?)]

3.修改qiun-data-charts.vue下sdk引入路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPqnnBSS-1665996803735)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b53bf55c1d2a45ce8bae7dc3a04b4686~tplv-k3u1fbpfcp-watermark.image?)]

二、基本使用

<qiun-data-charts type="demotype" :chartData="chartData" />
chartData: {
  categories: ['10-07', '10-08', '10-09', '10-10', '10-11', '10-12'],
  series: [{
    name: '成交量A',
    color: '#1890FF',
    data: [0, 10, 20, 30, 40, 50]
  }]
}

效果:

在这里插入图片描述

三、问题汇总

1.图表层级过高导致真机显示异常

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4h3PXPjz-1665996803736)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7f778c78a47b4261894e06b99154f32a~tplv-k3u1fbpfcp-watermark.image?)]

解决:
开启canvas2d模式:canvas2d="true"

<qiun-data-charts type="demotype" :canvas2d="true" :chartData="chartData" />

注:设置后微信开发者工具显示不正确,但真机显示是正常的

2.x轴格式化

添加图表配置:opts="opts"

<qiun-data-charts type="demotype" :canvas2d="true" :opts="opts" :chartData="chartData" />
opts: {
  xAxis: {
    format: 'xAxisDemo3'
  }
}

ucharts配置文件添加对应配置
src/js_sdk/config-ucharts.js:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aPWwHcGC-1665996803736)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e26e8669cad44c8e85afe70ec9f3a920~tplv-k3u1fbpfcp-watermark.image?)]

效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a0H7SzuK-1665996803736)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9dbb69db3d02405da94e773e3c9f1ec8~tplv-k3u1fbpfcp-watermark.image?)]

3.提示框显示单位

原理同上

设置提示框显示格式函数tooltipFormat="tooltipTemp1"

<qiun-data-charts type="demotype" tooltipFormat="tooltipTemp1" :canvas2d="true" :opts="opts" :chartData="chartData" />

添加数据列对应的单位:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QQxwX3JT-1665996803736)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/dc39ec01344340c8bde6eede83171cd5~tplv-k3u1fbpfcp-watermark.image?)]

ucharts配置文件添加对应配置
src/js_sdk/config-ucharts.js:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-liXZ1bEF-1665996803737)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ad41d0067f7d4c75be2824d9aa1375a5~tplv-k3u1fbpfcp-watermark.image?)]

效果:

在这里插入图片描述

4.默认显示提示框tooltip

在ucharts问答社区中找到如下条目:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqqbkTFJ-1665996803737)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bab8a3fb553640f0adf66bac7d50b575~tplv-k3u1fbpfcp-watermark.image?)]

示例代码

解决:
给图表添加渲染完成事件@complete="completeHandler"

<qiun-data-charts type="demotype" tooltipFormat="tooltipTemp1" :canvas2d="true" :opts="opts" :chartData="chartData" @complete="completeHandler" />
completeHandler(e) {
  const { series, categories } = e.opts
  const index = series[0].data ? series[0].data.length - 1 : 0
  const textList = series.map(el => {
    return {
      text: `${categories[index]} ${el.name}: ${el.data[index]}${el.unit}`,
      color: el.color
    }
  })
  
  uCharts.instance[e.id].showToolTip(
    { changedTouches: [{ x: 0, y: 100 }] },
    {
      index: index,
      textList: textList
    }
  );
}

效果:

在这里插入图片描述

5.循环生成图表设置相对定位,点击图表提示框不显示

<view v-for="(item, index) in list" :key="item.id">
  <view class="title">图表{{ index + 1 }}</view>

  <view class="charts-box">
    <qiun-data-charts :key="item.id" :canvas2d="true" type="demotype" tooltipFormat="tooltipTemp1" :opts="opts" :chartData="item.data" @complete="completeHandler" />
  </view>
</view>
.charts-box {
  position: relative;
  width: 100%;
  height: 400rpx;
}

解决:

去掉position: relative;即可

本文demo源码

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐