ec-canvas 在小程序上的使用

news2024/10/6 14:27:57

在这里插入图片描述

文章目录

  • I. 前言
    • echarts、ec-canvas,在小程序中进行数据可视化的意义
  • II. 安装ec-canvas
    • 1. 下载安装ec-canvas组件
    • 2. 配置组件参数
  • III. 初识ec-canvas
    • 1. echarts在微信小程序中的工作原理
    • 2. echarts小程序版的局限性与创新点
    • 3. 通过一个简单的示例了解ec-canvas的基本用法
  • IV. 使用ec-canvas绘制图表
    • 1. 根据echarts各组件属性设置ec-canvas参数
    • 2. 配置图表的样式、类型、数据
    • 3. 使用`setOption`方法刷新图表
    • 4. 修改图表的参数并刷新画面
  • V.优化`echarts`小程序版体验
    • 1. 图表响应式适配
    • 2. echarts小程序版的性能与问题解决方案
    • 3. 减少echarts小程序版体积的五种方法
  • VI. 结语
    • 1. 如何使用ec-canvas实现小程序中的数据可视化
    • 2. 小程序版的echarts在性能、使用上的不断优化

I. 前言

echarts、ec-canvas,在小程序中进行数据可视化的意义

Echarts 是一款由百度开发和维护的的数据可视化工具库,其提供了各种类型的图表和交互式组件,同时支持动态数据更新和动画效果等功能。通过使用 Echarts,用户可以简单、快速地构建可视化图表和交互式组件,帮助用户更好地理解和展示大量的数据信息。而 ec-canvasEcharts 专门针对小程序开发的图表库,通过提供对小程序原生 canvas 属性的封装和优化,从而达到将 Echarts 功能转化为小程序能够识别的 Api,从而实现在小程序中进行数据可视化的目的。

在小程序中进行数据可视化,可以帮助用户直观地展示数据,提高数据解读和分析的效率,同时让用户可以通过简单的手势操作,进行数据的筛选、比较和分析等操作,方便用户对数据的处理和挖掘,进而为用户提供更全面、精准的决策依据,帮助用户更好地理解和处理数据。此外,小程序作为一种轻量级、交互性强的移动应用程序,在访问速度、用户使用习惯等方面相较于传统的 PC 和 Web 端应用具有更为优越的使用体验。因此,将 Echarts 库和 ec-canvas 组件运用到小程序中,可以充分利用小程序的优点,来实现数据的可视化展示和业务逻辑功能的实现。

II. 安装ec-canvas

1. 下载安装ec-canvas组件

在小程序中使用 echarts 需要下载安装 ec-canvas 组件。

下面简单介绍 ec-canvas 的安装流程。

  1. 打开 Github ec-canvas 项目页面:https://github.com/ecomfe/ec-canvas

  2. 点击Clone or download,选择Download ZIP来下载 ec-canvas 组件。

  3. 解压缩下载的 ZIP 文件,打开解压缩后的文件夹,可以看到其中包含一个名为 ec-canvas 的文件夹,其中包含了 ec-canvas 组件的主要代码。

  4. ec-canvas 文件夹中的文件复制到您小程序项目的相应目录下,一般为 /components/ec-canvas

  5. 在小程序页面的 json 配置文件中添加 "usingComponents" 对象,以便能够在页面中引用 ec-canvas 组件。例如:

    {
      "usingComponents": {
        "ec-canvas": "/components/ec-canvas/ec-canvas"
      }
    }
    
  6. 在小程序页面的 wxml 文件中,即可通过标签<ec-canvas>引用 ec-canvas 组件。

总之,下载安装 ec-canvas 组件非常简单,只需要在 Github 上下载该组件,并将其导入到小程序项目中即可。

2. 配置组件参数

安装完成 ec-canvas 组件后,需要进行参数配置,才能正确的使用。以下是 ec-canvas 组件的几个主要参数:

  1. canvas-id: Canvas 的 id,用于在 js 中获取 Canvas 对象。
  2. ec-parameter: 将 echarts 配置信息以 json 类型传入 ec-canvas 组件中,这个参数很重要。
  3. disable-scroll: 是否禁止页面滑动,默认值为 false。

针对这些参数,以下是如何正确地进行配置:

1. 设置 canvas-id

将在小程序页面引用 ec-canvas 组件的标签的 canvas-id 属性设置为一个字符串,名称可以任意指定,例如:

<ec-canvas canvas-id="mychart"></ec-canvas>

2. 设置 echarts 配置信息

将 echarts 的配置信息以 json 形式传入 ec-canvas 组件中。这个配置信息需要在 wxml 中通过绑定 data 值进行传递,例如:

<ec-canvas id='mychart-dom-line'
  canvas-id='mychart-line'
  ec:canvas-id='mychart-line'
  ec:binderror='onError'
  ec:show-tooltip='true'
  ec:enable-pinch-zoom='true'
  ec:touch-move-limit='20' 
  ec:scale-mode='aspectFit'
  ec:animation-duration='500'
  ec:categories='{{categories}}'
  ec:series='{{series}}'
  onInit='initChart'>
</ec-canvas>

上述代码中,绑定了 ec:categoriesec:series 两个参数,其中 categoriesseries 分别表示图表的类别信息和数据信息。这些参数的具体含义和用法请参考 echarts 官方文档。

3. 禁止页面滑动

如果不希望通过手势滑动页面来滚动小程序中的 echarts 图表,可以在 ec-canvas 组件上设置 disable-scroll 属性:

<ec-canvas canvas-id="mychart" disable-scroll="{{true}}"></ec-canvas>

经过以上配置后,即可在小程序中愉快的使用 echarts 组件啦!

III. 初识ec-canvas

1. echarts在微信小程序中的工作原理

ECharts 是一个基于 JavaScript 的开源可视化图表库,它可以支持在 Web 应用中使用,并且也可以在移动端应用中进行使用。为了将 ECharts 应用于微信小程序中,需要进行以下步骤:

1. 安装 echarts-for-weixin 库包

npm install echarts-for-weixin --save

2. 导入 echarts 库,并创建图表实例

<canvas id="myChart"></canvas>
const echarts = require('echarts-for-weixin');
const chart = echarts.init(this.selectComponent('#myChart').canvas);

3. 配置图表参数

const options = {
  title: {
    text: 'ECharts 入门示例'
  },
  tooltip: {},
  legend: {
    data:['销量']
  },
  xAxis: {
    data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
  },
  yAxis: {},
  series: [{
    name: '销量',
    type: 'bar',
    data: [5, 20, 36, 10, 10, 20]
  }]
};

chart.setOption(options);

4. 渲染图表

this.selectComponent('#myChart').canvasToTempFilePath({
    success(res) {
        console.log(res.tempFilePath);
    },
    fail(res) {
        console.log(res);
    },
    complete(res) {
        console.log(res);
    }
}, this);

以上便是使用 ECharts 在微信小程序中进行开发的基本步骤。富有表现力的可视化数据是许多小程序所需的关键业务应用,ECharts 可以提供丰富的体验以及良好的交互设计。

2. echarts小程序版的局限性与创新点

ECharts小程序版相比于Web版有一些局限性。其中主要包括以下几点:

  1. 图表类型受限: 在小程序中,ECharts的支持的图表类型会受到一定程度的限制。
  2. 静态绘制: 小程序中的canvas画布可以通过调用draw方法直接将图表绘制在画布上,但这种绘制方式不支持交互事件的响应。
  3. 性能限制:小程序本身的功能以及性能受限,使用ECharts可能会对小程序整体性能造成一定影响。

但是,ECharts小程序版也有一些创新点:

  1. 借助微信小程序提供的开发者工具,通过调用微信小程序的API,可以实现小程序与ECharts的深度结合,提供更好的用户体验。
  2. ECharts小程序版的库包体积较小,轻量化特点能更好地适应小程序开发所需。
  3. 通过集成ECharts可视化库,能够实现数据可视化,方便用户对数据进行更具深度的分析。

3. 通过一个简单的示例了解ec-canvas的基本用法

下面是一个简单的示例,用于创建一个柱状图:

1. 在小程序页面的json文件中注册canvas

{
  "usingComponents": {
    "ec-canvas": "../../components/ec-canvas/ec-canvas"
  }
}

2. 在小程序页面中引入echarts库

import * as echarts from '../../utils/echarts.min.js'

3. 在小程序页面wxml文件中放置ec-canvas组件

<ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>

4. 在小程序页面js文件中创建图表实例,并进行相关配置与渲染

Page({
  data: {
    ec: {
      onInit: initChart
    }
  }
})

function initChart(canvas, width, height) {
  const chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart);
  
  const option = {
    color: ['#3398DB'],
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'shadow'
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [
      {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
        axisTick: {
          alignWithLabel: true
        }
      }
    ],
    yAxis: [
      {
        type: 'value'
      }
    ],
    series: [
      {
        name: '直接访问',
        type: 'bar',
        barWidth: '60%',
        data: [10, 52, 200, 334, 390, 330, 220]
      }
    ]
  };

  chart.setOption(option);
  return chart;
}

以上便是通过 ec-canvas 实现一个简单柱状图的流程,具体步骤包括创建canvas、初始化ECharts实例、配置ECharts参数、渲染图表等过程。

IV. 使用ec-canvas绘制图表

1. 根据echarts各组件属性设置ec-canvas参数

ec-canvas会将ECharts实例中的option参数解析为对应canvas的属性来渲染图表。根据不同组件的属性,ec-canvas会将option参数解析为对应的canvas参数。

以下是ec-canvas中使用到的一些属性参数及其对应的ECharts配置项:

  • canvas: canvas自身的属性,例如id、style等。
  • subtitle: 副标题的相关属性,例如textStyle
  • yAxis: 直角坐标系中y轴的相关属性,例如axisLine、axisTick、axisLabel、splitLine、min、max等。
  • xAxis: 直角坐标系中x轴的相关属性,例如axisLine、axisTick、axisLabel、splitLine等。
  • tooltip: 提示框组件的相关属性,例如trigger、formatter、axisPointer等。
  • grid: 直角坐标系内绘图网格的相关属性,例如left、right、top、bottom、width、height、containLabel等。
  • series: 数据系列的相关属性,例如symbol、symbolSize、itemStyle等。

通过在option参数中设置相应属性,可以改变ECharts图表的展现形式。例如,可以通过设置xAxis中的axisLineaxisTick以及axisLabel属性来自定义x轴,通过设置tooltip属性来定制提示框的样式等。

总之,在使用ec-canvas中,需要熟悉各个组件的参数属性,以及对应的ECharts配置项,以便将canvas上的图表效果与设计要求相匹配。

2. 配置图表的样式、类型、数据

echarts中,通过配置option对象来配置图表样式、类型、数据。

option对象是一个包含各种配置参数的json对象,包含多个属性,每个属性对应不同的配置项,比如:标题、x轴、y轴、数据等。

下面是一个简单的示例,用于创建一个柱状图例子:

// 引入 ECharts 主模块
import * as echarts from '../../ec-canvas/echarts';

Page({
  onLoad: function (options) {
    this.setData({
      ec: {
        // 组件 ID
        id: 'chart1',
        // canvas 宽度,单位为px
        width: 360,
        // canvas 高度,单位为px
        height: 240,
        // ECharts配置项
        option: {
          // 图表的标题
          title: {
            text: '销售量'
          },
          // 柱状图
          series: [{
            type: 'bar',
            data: [5, 20, 36, 10, 10, 20]
          }]
        }
      }
    });
  }
})

在上面的代码中,我们通过在data中设置一个ec对象,然后在onLoad函数中更新这个对象的值。ec对象包含了组件的ID、宽度、高度和option对象。在option中,我们定义了图表的标题和一个柱状图。其中柱状图的数据为一个长度为6的数组,每个值对应一个柱子的高度。

可以看出,通过简单地配置option对象,我们就可以完成数据的设置和图表的样式定制。可以根据ECharts的文档和API进一步了解图表类型、数据格式以及各种美化操作。

3. 使用setOption方法刷新图表

如果需要更新已经绘制的图表,可以使用setOption方法。

例如,在一个柱状图中,我们可以通过点击按钮,动态地更新数据。

完整的代码示例如下:

import * as echarts from '../../ec-canvas/echarts';

let chart = null;

function initChart(canvas, width, height) {
  chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart);
  
  const option = {
    title: {
      text: '销售量'
    },
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [{
      type: 'bar',
      data: [5, 20, 36, 10, 10, 20, 8]
    }]
  };

  chart.setOption(option);
  return chart;
}

Page({
  data: {
    ec: {
      onInit: initChart
    }
  },
  updateChart: function() {
    const option = {
      series: [{
        data: [15, 30, 46, 20, 20, 30, 18]
      }]
    };
    chart.setOption(option);
  }
})

在上面代码中,使用initChart函数初始化图表,设置了初始option。数据系列中的data用一个长度为7的数组来定义,表示每一个数据点对应的显示值。在updateChart函数中,通过更改数据系列中的data数组,用setOption方法更新图表的数据。当触发按钮点击事件时,调用updateChart函数实现图表的刷新。只需要更改视图中图表对应的option,再调用 setOption 方法进行更新即可。

当然,除了数据的更新,你还可以使用 setOption 函数来更新其他样式配置,比如标题、坐标系、图例、标记等。

4. 修改图表的参数并刷新画面

要修改图表参数并刷新画面,可以使用以下两种方式:

方式一:直接更新option

可以使用 chart.getOption() 获取当前图表参数,修改需要修改的属性后,再用 chart.setOption(option) 方法设置当前参数并刷新画面。

例如:

const option = chart.getOption();
option.title.text = "新标题";
option.xAxis[0].data = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
chart.setOption(option);

上述代码中,我们首先使用 getOption 方法获取了当前图表的 option 参数,然后修改了参数中的 titlexAxis,最后使用 setOption 方法将新的参数设置并刷新画面。这里修改了标题和x轴,其他的配置同理。

方式二:通过onInit方法更新option

通过修改onInit方法的调用参数,可以进行视图的刷新和重新绘制。

例如:

let chart = null;

function initChart(canvas, width, height, dpr) {
  chart = echarts.init(canvas, null, {
    width: width,
    height: height,
    devicePixelRatio: dpr
  });

  this.setData({
    chart: chart
  });

  const option = {
    /* ...填写具体配置项 */
  };

  chart.setOption(option);
}

function updateChart() {
  const option = {
    /* ...填写修改后的配置项 */
  };
  this.setData({
    ec: {
      onInit: initChart.bind(this),
      lazyLoad: true,
      option: option
    }
  });
}

如上述代码,我们首先声明了一个chart变量,用于保存图表实例。在onInit方法中,除了常规配置项外,还通过setData方法将创建好的图表实例传给了this.data,这样我们就可以随时获取chart实例进行操作。

在updateChart函数中,通过setData方法将新的option对象传递给了ec-canvas组件,同时在onInit方法中获取最新的option,并进行了重新绘制操作。

注意:在使用这种方式时,需要将 lazyLoad 属性设置为 true,这样 ec-canvas 组件才会调用 onInit 方法,进行更新操作。

综上,通过修改 option 参数,或者重新调用 onInit 方法,我们就可以更新图表的参数并刷新画面了。不同的修改方式,可以根据具体场景进行选择。

V.优化echarts小程序版体验

1. 图表响应式适配

ECharts 在支持多种图表类型和丰富的配置选项的同时,也提供了响应式布局方案。

下面是一些常用的 ECharts 响应式适配方案:

  1. 使用resize方法:

通过监听窗口尺寸变化事件,然后使用 chart.resize() 方法重新渲染图表。

import * as echarts from '../../ec-canvas/echarts';

Page({
  onLoad: function (options) {
    this.setData({
      ec: {
        id: 'mychart',
        option: {},
        onInit: function (canvas, width, height, dpr) {
          const chart = echarts.init(canvas, null, {
            width: width,
            height: height,
            devicePixelRatio: dpr
          });
          this.chart = chart;
          chart.setOption(this.getOption());
          return chart;
        }
      }
    });
  },

  onReady: function () {
    // 监听窗口尺寸变化事件,执行 resize 方法重新渲染图表
    wx.onWindowResize(() => {
      this.chart && this.chart.resize();
    });
  },

  getOption: function () {
    return {...}
  },
});
  1. 使用grid属性指定图表大小:

通过在 grid 属性中指定图表长和宽的百分比,实现图表响应式布局。

const option = {
  title: {
    text: '响应式布局示例'
  },
  grid: {
    width: '80%', // 宽度占 80%
    containLabel: true // 包含刻度标签

  },
  xAxis: {...},
  yAxis: {...},

  series: {...}

};
  1. 使用media数据集:

可以在 option.media 中设置多组属性,这些属性将覆盖option中的配置项。通过配置media数据集,可以根据窗口大小,按照不同的宽度,采用不同的配置项。

const option = {
  baseOption: {...},
  media: [
    {
      option: {
        grid: {
          width: '90%'
        },
        series: [{
          type: 'bar',
          barWidth: 20
        }]
      }
    },
    {
      query: {
        minWidth: 800
      },
      option: {
        grid: {
          width: '50%'
        },
        series: [{
          type: 'bar',
          barWidth: 30
        }]
      }
    }
  ]
};

在上面的代码中,我们定义了两个media的数据集,分别适用于宽度小于800px和大于800px的场景。通过在media的配置中设置 queryoption ,可以实现窗口大小判定和对应的配置项设置。

  1. 使用flex布局:

重头戏来啦!相比于前面的几种方式来说,flex 布局具有更强大的响应式适配能力。

<view class='chart-container'>
  <ec-canvas id='mychart-canvas' canvas-id='mychart-canvas' ec="{{ ec }}" />
</view>
.chart-container{
  display: flex;
  width: 100%;
  height: 400rpx;
}
const option = {...}

Page({
  ...
  getOption() {
    if (someCondition) {
      option.title.text = '第一种配置项';
    } else {
      option.title.text = '第二种配置项';
    }
    return option;
  }
});

在上面的代码中,我们使用CSS flex布局和onInit中的option配置来实现图表的响应式适配。

具体来说,我们将 ec-canvas 组件放置在一层 div 容器中,然后通过设置它的 display 属性为 flex,以父容器的宽度为基准,进行图表的自适应展示。

同时我们也可以通过在 getOption() 方法中,对不同的情况返回不同的配置项,以针对不同的屏幕大小进行设置。

2. echarts小程序版的性能与问题解决方案

ECharts 微信小程序版是 ECharts 官方提供的一款专为微信小程序定制和优化的图表库,拥有跨平台使用、数据可视化、图表丰富等特点,同时在性能、稳定性等方面也做了不少优化。

但是,即便是经过了优化,ECharts在微信小程序的使用过程中,也会出现一些问题,例如初始加载慢、过度渲染、内存泄漏等。这里介绍一些常见性能问题及对应解决方案:

1. 初始加载慢

经常会出现由于数据量过大、初始化过程中的复杂计算和渲染等原因,导致图表初始加载过慢的情况。这时可以通过一些措施来缓解这种情况:

  • 使用缓存

可以通过在后端缓存数据,前端通过 AJAX 调用数据,然后利用 chart.clear()chart.load() 的数据更新方法来刷新页面。

  • 懒加载

可以通过设置 lazyLoad 属性为 true,当视口进入范围内时才会初始化图表,避免不必要的初始计算和渲染。

  • 数据优化

优化单条数据的显示方式,比如横轴坐标的旋转和隐藏、数据的饼图标签重叠等。

2. 过度渲染

过度渲染是指当数据过多时,渲染所需的时间就会变得十分长,导致页面出现卡顿和操作响应不及时等问题。这里有几个解决方案:

  • 数据分段

针对数据量大的问题,可以将数据分段展示,比如分段渲染大数据量的折线图、柱状图等。

  • 图表共用

将数据分散到多个图表中展示,互不重叠、互相协作,降低单个图表的数据负荷。

  • 动态渲染

对于连续-flow 的数据,可以通过动态渲染方式,来减轻一次性渲染的负担,且互动体验不会影响整体性能。

3. 内存泄漏

内存泄漏是一个普遍存在且引发疑难问题的情况,通常会导致页面卡顿,甚至直接崩溃的情况。解决方案可以是手动释放资源、开启回收机制、优化赋值操作等:

  • 手动释放

onUnload方法中,释放对chart实例的引用。应避免在视图销毁之前,持有图表实例的引用,以便系统可以释放图表的相关资源。

  • 启用分级回收算法

可以在图表初始化的anchorOption中开启 animationThreshold 配置项,以便可以在不同的动画阈值下显示动画。

  • 优化赋值操作

对于复杂的图表或需要 frequent 数据更新的特殊图表类型,可以考虑避免使用直接赋值数据的方式。可以通过合理的数据处理以及增量更新等方式来减轻渲染压力。

以上是一些常见的问题和解决方案,但在实际开发过程中,遇到的问题和解决方案还有很多,也需要根据实际情况进行优化,以提高用户体验和性能。

3. 减少echarts小程序版体积的五种方法

VI. 结语

1. 如何使用ec-canvas实现小程序中的数据可视化

在微信小程序中,由于代码体积的限制,我们需要考虑对 ECharts 进行体积优化,以便能够更好地适应微信小程序的开发。

以下是几个常见的 ECharts 体积优化方案:

1. 异步加载:

可以使用 importScript 或者 wx.request 异步加载,只有当数据请求成功后,才会进行图表的渲染,从而实现按需加载。这种方式不仅可以缩短初始加载时间,还可以根据需求动态加载图表模块。

2. 按需引入:

ECharts 库包含了很多组件和功能,但实际应用场景中,并不一定都需要用到。因此,按需引入需要的组件,可以有效地减小 ECharts 库的体积。可以通过在page.json中配置:

{
  "usingComponents": {
    "ec-canvas": "../../components/ec-canvas/ec-canvas"
  }
}

或者在页面内使用import动态引入:

import * as echarts from '../../ec-canvas/echarts';
import 'echarts/lib/chart/pie';

3. 离线打包:

通过使用 ECharts 的离线打包功能(Optimized ECharts),可以在保证功能不变的前提下,将体积从原来的 1.1MB 降低到 300KB 左右。在官网上下载离线打包文件,然后直接引入即可。

4. 使用 gzip:

在使用 ECharts 库时,提供给前端的 JS 文件可以通过压缩(gzip)来减小体积。服务器返回时,先判断用户的请求是否支持 gzip 压缩,如果支持,则返回 gzip 压缩后的 JS 文件。

5. 使用 CDN:

在开发过程中,如果遇到体积过大的 ECharts 库,可以考虑使用 CDN。CDN 服务商会对一些文件进行大量的缓存,以备下一次使用。这种方式可以缓解压缩包文件过大的问题,将 ECharts 库的体积大大减小。

综上所述,五种方法可以帮助我们在微信小程序中减少 ECharts 库的体积,提高用户的使用体验及性能,可以根据实际情况选择其中一种或多种方法进行实现。

2. 小程序版的echarts在性能、使用上的不断优化

ECharts 微信小程序版是 ECharts 官方提供的一款专为微信小程序定制和优化的图表库。在开发者不断的反馈和贡献下,ECharts小程序版也在不断地进行性能和使用上的优化。

下面是ECharts小程序版的性能和使用上的不断优化:

1. 增加懒加载机制:

懒加载机制是指,当组件进入可视区域时才进行初始化绘制。这样既能够优化初始加载性能,又能避免引起过度渲染等问题,提高用户体验。

2. Layout性能优化:

对于常见图表类型(如折线图、柱状图等),通过 Layout 布局调整、优化和缓存,可以在不影响图表展示效果的前提下,大大提高渲染性能。

3. 提高绘图性能:

通过 Canvas 的底层操作和微信小程序中的自定义组件技术,ECharts 微信小程序版大大提高了绘制性能和渲染效果。

4. 完善文档和示例:

ECharts 微信小程序版还提供了完善的文档和大量示例代码,可以帮助开发者更好地掌握使用技巧和最佳实践。

5. 主动响应问题和需求:

ECharts 小程序版的开发团队一直密切关注开发者的反馈和需求,通过 GitHub Issue 等渠道,积极响应问题和需求,及时提供技术支持和解决方案。

综上所述,ECharts 微信小程序版在性能和使用方面的不断优化,为开发者提供了更好的体验和更高的效率,帮助开发者更好地完成微信小程序的数据可视化需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610262.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python备份列表l:保护你的重要数据

Python备份列表l: 保护你的重要数据 当我们谈到数据的安全性时&#xff0c;备份是非常重要的。备份应该是在任何操作之前考虑的&#xff0c;因为在数据丢失或计算机崩溃时&#xff0c;我们需要在短时间内恢复数据。在这篇文章中&#xff0c;我们将讨论Python备份列表l。 什么…

【python技能树】python简介

1 Python定义 Python 是一种简单易学并且结合了解释性、编译性、互动性和面向对象的脚本语言。Python提供了高级数据结构&#xff0c;它的语法和动态类型以及解释性使它成为广大开发者的首选编程语言。 Python 是解释型语言&#xff1a; 开发过程中没有了编译这个环节。类似于…

Linux系统-Ubuntu安装指定版本的内核

Ubuntu安装指定版本的内核 以下演示 Linux 系统内核,手动安装的话可以安装所有指定版本的内核。 查看当前系统内核 uname -sr接下来以安装 5.13.0 内核为例 首先去 http://kernel.ubuntu.com/~kernel-ppa/mainline/找到内核版本为5.13.0 的链接 根据电脑64位处理器 选择 AM…

chatgpt赋能python:Python奇数和偶数和

Python奇数和偶数和 在Python编程中&#xff0c;奇数和偶数和是一个基本的概念。奇数和偶数是指整数的特定类型&#xff0c;其中奇数是指不能被2整除的正整数&#xff0c;偶数是指可以被2整除的正整数。本文将介绍Python中计算奇数和偶数和的方法。 计算奇数和偶数 要计算奇…

「QT」QT5程序设计目录

✨博客主页:何曾参静谧的博客 📌文章专栏:「QT」QT5程序设计 目录 📑【QT的基础知识篇】📑【QT的GUI编程篇】📑【QT的项目示例篇】📑【QT的网络编程篇】📑【QT的数据库编程篇】📑【QT的跨平台编程篇】📑【QT的高级编程篇】📑【QT的开发工具篇】📑【QT的调…

chatgpt赋能python:Python地址怎么写的SEO

Python地址怎么写的SEO 随着数字化时代的到来&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已成为网站排名和流量的重要因素。为了让Python 相关网站在搜索引擎上更加有利的排名&#xff0c;需要了解Python地址要怎么写才能获得更好的SEO效果。 为什么地址要写好 地…

操作系统(进程与线程,复习自用)

进程与线程 进程与线程进程的概念、组成、特征进程的状态与转换进程控制进程通信&#xff08;IPC&#xff09;线程概念 多线程模型线程的实现方式 多线程模型线程的状态与转换 CPU调度与上下文切换调度的概念、层次进程调度的时机 切换与过程调度方式调度器 闲逛进程调度算法的…

chatgpt赋能python:Python备份交换机:保障网络安全的必备工具

Python备份交换机&#xff1a;保障网络安全的必备工具 在当今互联网时代&#xff0c;因特网已经成为了全球的必备基础设施。然而&#xff0c;在使用网络的过程中&#xff0c;我们也会遭遇到各种各样的问题&#xff0c;其中最常见的就是网络中断或数据丢失。特别是对于企业和组…

javaScript蓝桥杯----绝美宋词

目录 一、介绍二、准备三、目标四、代码五、踩坑六、完成 一、介绍 “今宵酒醒何处&#xff0c;杨柳岸晓风残月”&#xff0c;“蓦然回首&#xff0c;那人却在灯火阑珊处”&#xff0c;“试问闲愁都几许&#xff1f;一川烟草&#xff0c;满城风絮&#xff0c;梅子黄时雨” … …

K8s网络管理 flannel

K8s网络管理 flannel 1 网络管理1.1 Service1.1.1 网络体系1.1.2 工作模型1.1.3 SVC实践1.1.4 IPVS实践 1.2 其他资源1.2.1 域名服务1.2.2 CoreDNS1.2.3 无头服务 2 容器网络2.1 网络方案2.2 flannel2.3 主机网络 1 网络管理 1.1 Service 1.1.1 网络体系 应用流程 资源对象…

Elasticsearch基础

Elasticsearch是搜索服务器 视频地址&#xff1a;https://www.bilibili.com/video/BV1Sy4y1G7LL/?p6&spm_id_from333.880.my_history.page.click&vd_sourcefc7fa697b97f292319c5b0cde4755484 下载地址&#xff1a;[https://artifacts.elastic.co/downloads/elasticse…

赋予品牌文化原力,从已有文化中挖掘

赋予品牌以文化原力&#xff0c;从已有文化中挖掘 华与华总结为&#xff1a; 寻找母体&#xff0c;寄生母体&#xff0c;成为母体&#xff0c;壮大母体 非常经典的例子&#xff1a;微信红包 趣讲大白话&#xff1a;文化有持续的力量 【趣讲信息科技186期】 *******************…

Redisson看门狗机制为什么比将锁设置成永久有效期更好?

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…

【测绘程序设计】C#伪距单点定位

文章目录 一、题目解读二、界面设计三、矩阵计算实现1、矩阵定义Matrix2、矩阵构造Matrix()3、单位矩阵MatrixE()4、加减乘操作符重载-*5、矩阵转置transposs()6、矩阵求逆Inverse() 四、数据存储结构设计1、Sat类存一颗卫星的数据2、Epoch类存一个历元的数据3、DataCenter类存…

Spring Cloud Alibaba - Sentinel(一)

目录 一、Sentinel介绍 1、什么是Sentinel 2、Sentinel好处 3、Sentinel下载和安装 二、搭建Sentinel项目 1、创建项目cloudalibaba-sentinel-service8401 三、Sentinel流控规则 1、流控规则基本介绍 2、新增流控 2.1、QPS直接失败案例 2.2、线程数直接失败案例 3、…

CF1839B Lamps

思路 这道题我们可以利用贪心的思想。 我们这里把 a i a_i ai​理解为第 a i a_i ai​层灯。 在层数相同的灯被破坏之后&#xff0c;灯的个数就会减少到 0 0 0&#xff0c;所以它一定不会影响到之后下一层的灯。 所以&#xff0c;我们贪心的思路是&#xff1a; 将每一层&am…

FreeRTOS学习(五)

延时函数 vTaskDelay()&#xff1a;相对延时&#xff0c;指每次延时都是从执行函数vTaskDelay()开始&#xff0c;直到延时指定的时间结束。vTaskDelayUntil()&#xff1a;绝对延时&#xff0c;整个任务的运行周期看成一个整体&#xff0c;适用于需要按照一定频率运行的任务。 …

卡尔曼滤波与组合导航原理笔记(一)第二部分 卡尔曼滤波方程的推导

文章目录 三、卡尔曼滤波1、随机系统状态空间模型2、状态预测3、状态量测4、增益矩阵K与状态估计5、Kalman滤波公式汇总6、Kalman滤波流程图1.划分为左右两部分&#xff08;一阶矩和二阶矩&#xff09;2.划分为上下两部分&#xff08;时间更新、量测更新&#xff09; 7、Kalman…

Windows11安装kohya_ss详细步骤(报错、踩坑)

文章目录 笔者环境所需环境安装kohya_ss方式一&#xff1a;带有GUI的kohya_ss仓库方式二&#xff1a;kohya_ss核心仓库 笔者环境 OS&#xff1a;windows11Python&#xff1a;3.10.6CUDA11.6 所需环境 Python3.10.6GitCUDA11.6 安装kohya_ss 方式一&#xff1a;带有GUI的ko…

mybatis执行流程分析

mybatis全局配置文件 mybatis全局配置文件中涉及的标签如下图所示 配置文件解析 public static void main(String[] args) throws IOException {// 读取配置文件InputStream is Resources.getResourceAsStream("org/apache/ibatis/builder/MapperConfig1.xml");//…