• uni-app 使用uCharts-进行图表展示(折线图带单位)


    前言

    • uni-app经常是需要进行数据展示,针对这个情况也是有人开发好了第三方包,来兼容不同平台展示

    • uCharts和pc端的Echarts使用差不多,甚至会感觉在uni-app使用uCharts更轻便,更舒服

    • 但是这个第三方包有优点就会有缺点,还会有坑的地方下面我会一一讲解

    uCharts使用-注意事项-和避坑

    • 首先我们在hb插件市场下载这个包时可能需要看一段广告......

    • 官方文档确实写的很清楚也很多,稍微适应一下就行了。但在线调试和定制需求是需要收费的

    • 这个组件在uni-app使用时,会受到定位,子绝父相,固定定位,隐藏等css属性影响,会导致显示正常,但是点击数据是没反应的,并且数据弹出框也是显示不出来的

    • 关于这个网上是说加一个canasid等,但并没有大作用,改源码的话不建议删代码,建议往上加

    • 在页面使用时,建议把每一个图标封装成全局组件(组件长宽100),在页面直接使用。

    • 每个图标padding属性很重要它可以是负值,从上 右 下 左 来帮助我们在父组件矫正布局

    • uCharts在示例里面各种图形数据格式-包括标题等,都不能修改它,只能像他看齐

    • x,y 轴单位x轴直接生效,y轴是需要开启才会生效,注意看文档

    uCharts包地址

    插件市场地址:秋云 ucharts echarts 高性能跨全端图表组件 - DCloud 插件市场

    包文档地址:uCharts官网 - 秋云uCharts跨平台图表库

    代码实现

    1.来到插件市场-下载插件导入HBuilderX

    2.来到全局组件components文件-右键新建组件-创建同名目录(很重要)创建scss命名failure-rate

    代码如下-查看官方文档-注意宽高-100-使用父组件宽高

    1. <script>
    2. export default {
    3. name: "failure-rate",
    4. // 接受父组件传递数据
    5. props: ['data'],
    6. watch: {
    7. data: {
    8. deep: true,
    9. handler(newVal) {
    10. console.log('执行了', newVal);
    11. // 监听data的变化,数据变化时候更新图标
    12. // x轴数据
    13. this.categories = newVal.xdata
    14. // 数据
    15. this.calleqdata.series[0].name = newVal.series[0].name
    16. this.calleqdata.series[0].data = newVal.series[0].data
    17. this.calleqdata.series[1].name = newVal.series[1].name
    18. this.calleqdata.series[1].data = newVal.series[1].data
    19. }
    20. }
    21. },
    22. data() {
    23. return {
    24. // 报警故障配置
    25. calleqopts: {
    26. // 数据颜色
    27. color: ["#1890FF", "#ffc370", ],
    28. // 内边距-矫正父组件布局
    29. padding: [-5, 0, 0, -5],
    30. // 是否显示折线图每个节点数据
    31. dataLabel: false,
    32. // 是否在每个节点-显示节点
    33. dataPointShape: false,
    34. // 是否开启滚动条-配合x轴itemCount出现x轴滚动条
    35. enableScroll: false,
    36. // 图例配置
    37. legend: {
    38. // 把图例放在图表上方
    39. position: "top",
    40. },
    41. // x轴配置
    42. xAxis: {
    43. // 单位
    44. title: '日期',
    45. // 单位横移偏移量
    46. titleOffsetX: '-20',
    47. // 不绘制纵向网格
    48. disableGrid: true
    49. },
    50. // y轴配置
    51. yAxis: {
    52. // 虚线-实线
    53. gridType: "dash",
    54. // 虚线单位
    55. dashLength: 2,
    56. // 开启y轴单位
    57. showTitle: true,
    58. // y轴配置
    59. data: [{
    60. // 不写最大最小值-自增长
    61. // min: 0,
    62. // max: 150,
    63. // y轴单位
    64. title: '数量',
    65. }]
    66. },
    67. extra: {
    68. line: {
    69. // 曲线圆滑模式
    70. type: "curve",
    71. // 折线的宽度
    72. width: 2,
    73. // 点击弹出框时,节点样式
    74. activeType: "hollow",
    75. // 自定义渐变色
    76. linearType: "custom",
    77. // 开启阴影
    78. onShadow: true,
    79. // 水平动画
    80. animation: "horizontal"
    81. }
    82. }
    83. },
    84. // 报警故障数据
    85. calleqdata: {
    86. // x轴数据
    87. categories: [],
    88. // 表格数据 - 一个对象就是一个数据
    89. series: [{
    90. // 数据名
    91. name: "",
    92. // 数据渐变
    93. linearColor: [
    94. [
    95. 0,
    96. "#1890FF"
    97. ],
    98. [
    99. 0.25,
    100. "#00B5FF"
    101. ],
    102. [
    103. 0.5,
    104. "#00D1ED"
    105. ],
    106. [
    107. 0.75,
    108. "#00E6BB"
    109. ],
    110. [
    111. 1,
    112. "#90F489"
    113. ]
    114. ],
    115. // 阴影部分
    116. setShadow: [
    117. 3,
    118. 8,
    119. 10,
    120. "#1890FF"
    121. ],
    122. // 数据量
    123. data: []
    124. },
    125. {
    126. name: "",
    127. linearColor: [
    128. [
    129. 0,
    130. "#FAC858"
    131. ],
    132. [
    133. 0.33,
    134. "#FFC371"
    135. ],
    136. [
    137. 0.66,
    138. "#FFC2B2"
    139. ],
    140. [
    141. 1,
    142. "#FA7D8D"
    143. ]
    144. ],
    145. setShadow: [
    146. 3,
    147. 8,
    148. 10,
    149. "#FC8452"
    150. ],
    151. data: []
    152. }
    153. ]
    154. },
    155. };
    156. },
    157. }
    158. script>

    3.来到父组件使用-因为我们组件符合小程序规范-不用注册直接使用-代码如下

    1. <script>
    2. export default {
    3. data() {
    4. return {
    5. // 报警率趋势
    6. calltendency: {},
    7. };
    8. },
    9. onLoad() {
    10. // 模拟掉接口
    11. this.getcalltendency()
    12. },
    13. onReady() {
    14. // 模拟掉接口
    15. // this.getcalltendency()
    16. },
    17. methods: {
    18. getcalltendency() {
    19. console.log('发送数据');
    20. setTimeout(() => {
    21. let a = {
    22. xdata: ["2018", "2019", "2020", "2021", "2022", "2023"],
    23. series: [{
    24. name: '电话',
    25. data: [15, 45, 15, 45, 15, 45]
    26. },
    27. {
    28. name: '短信',
    29. data: [95, 125, 95, 125, 95, 125]
    30. }
    31. ]
    32. }
    33. // 传递数据
    34. this.calltendency = a
    35. console.log('发送完毕');
    36. }, 2000)
    37. }
    38. }
    39. }
    40. script>
    41. <style lang="scss">
    42. .failceshi {
    43. i {
    44. color: skyblue;
    45. font-weight: 700;
    46. font-size: 38rpx;
    47. margin-left: 50rpx;
    48. }
    49. .failceshi-item {
    50. width: 100vw;
    51. height: 400rpx;
    52. }
    53. }
    54. style>

    4.调用接口传递真实数据-在子组件侦听传递过来的数据进行操作


    总结:

    经过这一趟流程下来相信你也对 uni-app 使用uCharts-进行图表展示(折线图带单位) 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

    什么不足的地方请大家指出谢谢 -- 風过无痕

  • 相关阅读:
    web前端-html-css-字体(字体的样式,字体的分类,字体其他样式,字体简写样式,文本样式)
    vue3+ts实现幻灯片效果
    IDEA插件开发(20)--Editor Components
    【AGC】典型问题FAQ 5
    LitCTF2023 - Reverse方向 全WP
    英伟达DeepStream学习笔记47——deepstream sdk安装
    超详细Python教程——修改和增加类属性
    【Docker】傻瓜式开发
    web立体相册
    【论文阅读】社交网络传播最大化问题-04
  • 原文地址:https://blog.csdn.net/weixin_53579656/article/details/132768298