HarmonyOS鸿蒙Next开发可以集成ECharts组件吗?或者其它第三方的图表组件

HarmonyOS鸿蒙Next开发可以集成ECharts组件吗?或者其它第三方的图表组件 鸿蒙开发可以集成ECharts组件吗?或者其它第三方的图表组件,比如TradingView。。。

9 回复

【背景知识】

  • mpchart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图、股价走势图等场景中使用。方便开发者快速实现图表UI。mpchart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。
  • Canvas:画布组件,用于自定义绘制图形
  • chart:图表组件,用于呈现线形图、柱状图、量规图界面

【问题现象】 HarmonyOS上如何实现类似echarts的效果,有无相关实现方案。

【解决方案】

  • 可以使用图标库MpChart,其中包含各种类型的图表可供选择。
  • 使用Canvas画布绘制图表。详情请参考基于Canvas实现数据可视化
  • HarmonyOS中提供了兼容JS的类Web开发范式,可以使用组件Chart来实现复杂图表组件。

更多关于HarmonyOS鸿蒙Next开发可以集成ECharts组件吗?或者其它第三方的图表组件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ECharts集成方案

WebView嵌入方案

将ECharts通过本地HTML文件引入,使用Web组件渲染

// 加载本地HTML文件
Web({ src: $rawfile('echarts.html'), controller: this.controller })
  .width('100%')
  .height('100%')
  .onPageEnd(e => {
    // 注入图表配置
    this.controller.runJavaScript(`setOption(${JSON.stringify(option)})`);
  })

第三方可以使用 McCharts

ohpm install [@mcui](/user/mcui)/mccharts

地址

[https://ohpm.openharmony.cn/#/cn/detail/@mcui%2Fmccharts](https://ohpm.openharmony.cn/#/cn/detail/@mcui%2Fmccharts)

试试Webview组件方案

通过加载本地或远程HTML页面实现ECharts图表展示:

  1. 创建包含ECharts的HTML文件,引入官方JS库并配置图表容器
  2. 使用Web组件加载该HTML文件:
build() {
  Web({ src: $rawfile('echart_demo.html'), controller: this.webController })
    .width('100%')
    .height(400)
}
  1. 通过runJavaScript方法动态更新数据:
this.webController.runJavaScript(`initChart(${JSON.stringify(data)})`)

【背景知识】

[@ohos/mpchart](https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fmpchart):mpchart是一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI,mpchart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。

【参考方案】 可参考宝宝身高体重记录曲线示例,通过[@ohos/mpchart](https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fmpchart)绘制折线图(走势图)效果。

  1. 创建测量数据类GrowthRecord,使用[@ohos/mpchart](https://ohpm.openharmony.cn/#/cn/detail/@ohos%2Fmpchart)构建随时间变化的折线图模型LineCharts。
  2. 在主页面TabContent组件中分别调用LineCharts模型,导入身高体重的相关参数。
  3. 每次添加数据后返回主页面刷新模型。
// 监听数据集的变化
@Prop @Watch('onDataChange') trendData: Array<number> 

// 变化刷新模型
onDataChange() {
    if (this.model) {
      this.model.setData(this.getLineData());
      this.model.notifyDataSetChanged();
      this.model.invalidate();
    }
  }

// 绘制曲线
LineCharts({
  duringMinValue: 0,
  duringMaxValue: 70,
  timeStyle: TIME_STYLE,
  duringTime: DATE_TIME,
  trendData: this.weightList
})

https://developer.huawei.com/consumer/cn/forum/topic/0208186442611457099可以学习这篇文章,使用McCharts组合图组件

mpchart 一个包含各种类型图表的图表库,主要用于业务数据汇总,例如销售数据走势图,股价走势图等场景中使用,方便开发者快速实现图表UI,mpchart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图等自定义图表库。

ECharts是一个使用JavaScript实现的开源可视化库,这个用web都能显示出来吧!

HarmonyOS Next支持集成ECharts组件,可通过适配其JavaScript API在ArkUI Web组件中渲染图表。同时支持第三方图表组件如ZRender、Chart.js等,需通过Native API或Web方式调用。鸿蒙的ArkUI声明式开发范式允许自定义绘制组件,也可直接使用鸿蒙生态中的图表库。

是的,HarmonyOS Next支持集成ECharts等第三方图表组件,但需要适配鸿蒙的ArkTS/ArkUI开发范式。目前ECharts官方尚未提供原生鸿蒙版本,但可通过以下方式实现:

  1. Web组件嵌入:若组件提供Web版本,可通过鸿蒙的Web组件加载HTML5图表页面
  2. Native适配:将JS组件通过NAPI机制封装为原生模块
  3. 社区方案:已有开发者开源了部分图表库的鸿蒙适配版本(如hvigor+NAPI的移植方案)

推荐优先评估以下鸿蒙生态的图表方案:

  • 官方开发的@ohos/charts组件(持续更新中)
  • 基于Canvas自研绘制轻量图表
  • 等待主流库(如AntV、ECharts)的正式鸿蒙支持

需注意第三方库需验证API兼容性,部分浏览器依赖的API在鸿蒙需做polyfill处理。

回到顶部