鸿蒙5横向柱状图series属性解析

大家好,欢迎回来鸿蒙5莓创图表组件的专场,我们这一期来讲解McHorBarChart(横向柱状图)组件中series属性的详细用法。series属性是控制柱状图数据系列的核心配置项,掌握好这些属性可以让你轻松创建各种样式的柱状图效果。

1. name属性

作用:定义数据系列的名称,这个名称会显示在图例(legend)中,也会在tooltip提示框中显示。

类型:String

默认值:空字符串

必填:是

场景:当需要显示多个数据系列时,必须为每个系列设置不同的名称以便区分;在需要图例交互或tooltip提示时也需要设置。

代码示例:

css 复制代码
series: [
  {
    name: '最高气温',
    data: [11, 11, 15, 13, 12, 130, 10]
  },
  {
    name: '最低气温',
    data: [1, 2, 5, 3, 2, 30, 0]
  }
]

2. color属性

作用:设置柱状图的颜色,可以是单一颜色或渐变色。

类型:String | Array

默认值:使用全局调色盘颜色

可选值:

  • 十六进制颜色值,如'#296DFF'
  • RGB颜色值,如'rgb(41, 109, 255)'
  • 渐变色数组,如['#53e075', '#7953e075']

场景:需要自定义柱状图颜色时使用;当需要突出显示某个系列时;实现渐变效果时。

代码示例:

css 复制代码
// 单一颜色
series: [
  {
    name: '最高气温',
    color: '#ff2659f5',
    data: [11, 11, 15, 13, 12, 130, 10]
  }
]

// 渐变色
series: [
  {
    name: '最高气温',
    gradient: {
      color: ['#53e075', '#7953e075']
    },
    data: [30, 31, 35, 31, 28, 31, 31]
  }
]

3. shapeType属性

作用:控制柱状图的形状类型,可以创建普通柱状图或阶梯状柱状图。

类型:String

默认值:'normal'

可选值:

  • 'normal':普通柱状图
  • 'leftEchelon':左阶梯状柱状图
  • 'rightEchelon':右阶梯状柱状图

场景:需要创建特殊形状的柱状图时;在数据可视化中强调变化趋势时。

代码示例:

css 复制代码
series: [
  {
    name: '阶梯状柱状图',
    shapeType: 'leftEchelon',
    data: [11, 11, 15, 13, 12, 130, 10]
  }
]

4. echelonOffset属性

作用:当shapeType设置为阶梯状时,控制阶梯的锐度偏移量。

类型:Number

默认值:10

场景:调整阶梯状柱状图的视觉效果;需要更平缓或更尖锐的阶梯效果时。

代码示例:

yaml 复制代码
series: [
  {
    name: '阶梯状柱状图',
    shapeType: 'leftEchelon',
    echelonOffset: 15, // 更大的值会使阶梯更明显
    data: [11, 11, 15, 13, 12, 130, 10]
  }
]

5. yAxisIndex属性

作用:指定该数据系列关联的Y轴索引,用于多Y轴场景。

类型:Number

默认值:0

可选值:0或1(对应配置的yAxis数组中的索引)

场景:当图表需要显示多个Y轴时;不同数据系列的单位或量纲不同时。

代码示例:

css 复制代码
yAxis: [
  {name: '温度(℃)'},
  {name: '湿度(%)'}
],
series: [
  {
    name: '温度',
    yAxisIndex: 0,
    data: [11, 11, 15, 13, 12, 130, 10]
  },
  {
    name: '湿度',
    yAxisIndex: 1,
    data: [30, 35, 40, 45, 50, 55, 60]
  }
]

6. barStyle属性

作用:配置柱状图的样式,包括宽度、圆角、颜色等。

类型:Object

默认值:{}

子属性详解:

6.1 width

作用:设置柱子的宽度。

类型:Number

默认值:自动计算

场景:需要固定柱子宽度时;图表数据点较多需要缩小柱子时。

6.2 borderRadius

作用:设置柱子的圆角半径。

类型:Array | Number

默认值:0

可选值:

  • 单一数值:四个角使用相同圆角
  • 数组:[左上, 右上, 右下, 左下]
  • 简写数组:[左上和右下, 右上和左下]

场景:创建圆角柱状图时;需要美化柱子外观时。

6.3 color

作用:覆盖系列级别的颜色设置,单独设置柱子的颜色。

类型:String

默认值:继承series.color

场景:需要单独设置柱子颜色时。

完整代码示例:

css 复制代码
series: [
  {
    name: '圆角柱状图',
    barStyle: {
      width: 10,
      borderRadius: [0, 4, 4, 0], // 左上和右下无圆角,右上和左下4px圆角
      color: '#fa6262'
    },
    data: [11, 11, 15, 13, 12, 130, 10]
  }
]

7. backgroundStyle属性

作用:配置背景柱状图的显示和样式。

类型:Object

默认值:{show: false}

子属性详解:

7.1 show

作用:是否显示背景柱状图。

类型:Boolean

默认值:false

场景:需要显示背景参考线时;强调数据与目标的对比时。

7.2 width

作用:背景柱子的宽度。

类型:Number

默认值:与主柱子相同

7.3 color

作用:背景柱子的颜色。

类型:String

默认值:'rgba(180, 180, 180, 0.2)'

完整代码示例:

yaml 复制代码
series: [
  {
    name: '销售完成率',
    backgroundStyle: {
      show: true,
      width: 15,
      color: 'rgba(200, 200, 200, 0.3)'
    },
    data: [80, 92, 75, 88, 90, 83, 78]
  }
]

8. label属性

作用:配置柱状图上显示的文本标签。

类型:Object

默认值:{show: false}

子属性详解:

8.1 show

作用:是否显示文本标签。

类型:Boolean

默认值:false

8.2 color

作用:文本标签的颜色。

类型:String

默认值:'#000'

8.3 fontSize

作用:文本标签的字体大小。

类型:Number

默认值:12

8.4 fontWeight

作用:文本标签的字体粗细。

类型:String

默认值:'normal'

可选值:'normal' | 'bold' | 'lighter' | 'bolder' | 100-900

8.5 fontFamily

作用:文本标签的字体家族。

类型:String

默认值:'sans-serif'

8.6 position

作用:文本标签的位置。

类型:String

默认值:'top'(横向柱状图为'right')

可选值:'top' | 'bottom' | 'left' | 'right' | 'inside' | 'center'

8.7 offset

作用:文本标签的偏移量。

类型:Array

默认值:[0, 0]

8.8 formatter

作用:自定义文本标签内容。

类型:String | Function

默认值:显示数据值

可选值:

  • 'seriesLabel':显示系列名称和数据值
  • 函数:自定义格式函数

完整代码示例:

yaml 复制代码
series: [
  {
    name: '销售额',
    label: {
      show: true,
      color: '#fff',
      fontSize: 14,
      fontWeight: 'bold',
      position: 'center',
      offset: [0, 0],
      formatter: (params) => {
        return `¥${params.value}万`
      }
    },
    data: [120, 200, 150, 80, 70, 110, 130]
  }
]

9. stack属性

作用:设置堆叠柱状图,相同stack值的系列会堆叠在一起。

类型:String

默认值:空(不堆叠)

场景:需要显示堆叠柱状图时;展示部分与整体的关系时。

代码示例:

css 复制代码
series: [
  {
    name: '产品A',
    stack: 'total',
    data: [120, 132, 101, 134, 90, 230, 210]
  },
  {
    name: '产品B',
    stack: 'total',
    data: [220, 182, 191, 234, 290, 330, 310]
  }
]

10. data属性

作用:设置柱状图的数据。

类型:Array<String | Number | Object>

默认值:[]

必填:是

数据格式说明:

  • 简单数组:[11, 11, 15, 13, 12, 130, 10]
  • 对象数组:[{value: 11, color: '#ff0000'}, {value: 15, itemStyle: {...}}]

场景:任何柱状图都必须设置的数据;需要单独设置某个柱子的样式时。

代码示例:

yaml 复制代码
// 简单数据
series: [
  {
    name: '简单数据',
    data: [11, 11, 15, 13, 12, 130, 10]
  }
]

// 复杂数据
series: [
  {
    name: '复杂数据',
    data: [
      11, 
      {value: 15, color: '#ff0000'},
      {value: 13, itemStyle: {borderColor: '#000', borderWidth: 2}},
      12, 
      130, 
      10
    ]
  }
]

实际应用案例

下面我们通过一个完整的实际案例来展示如何综合运用这些属性:

less 复制代码
@Entry
@Component
struct SalesChart {
  @State options: Options = new Options({
    title: {
      show: true,
      text: '2023年季度销售报告',
      left: 'center',
      top: 10
    },
    legend: {
      show: true,
      top: 40
    },
    xAxis: {
      data: ['Q1', 'Q2', 'Q3', 'Q4']
    },
    yAxis: {
      name: '销售额 (万元)'
    },
    series: [
      {
        name: '线上销售',
        stack: 'total',
        barStyle: {
          borderRadius: [4, 4, 0, 0]
        },
        label: {
          show: true,
          position: 'inside',
          color: '#fff',
          formatter: 'seriesLabel'
        },
        gradient: {
          color: ['#4facfe', '#00f2fe']
        },
        data: [320, 332, 301, 334]
      },
      {
        name: '线下销售',
        stack: 'total',
        barStyle: {
          borderRadius: [0, 0, 4, 4]
        },
        label: {
          show: true,
          position: 'inside',
          color: '#fff',
          formatter: 'seriesLabel'
        },
        gradient: {
          color: ['#b8cbb8', '#b8cbb8', '#b465da']
        },
        data: [120, 132, 101, 134]
      },
      {
        name: '目标',
        type: 'line',
        symbol: 'diamond',
        symbolSize: 12,
        lineStyle: {
          width: 3,
          color: '#ff9800'
        },
        itemStyle: {
          color: '#ff9800'
        },
        data: [450, 464, 402, 468]
      }
    ]
  })

  build() {
    Row() {
      McHorBarChart({options: this.options})
    }
    .height('50%')
    .width('100%')
  }
}

这个案例展示了:

  1. 堆叠柱状图的使用
  2. 渐变色的应用
  3. 圆角柱子的设置
  4. 标签的灵活配置
  5. 混合图表(柱状图+折线图)的实现

好,这期讲到这里就结束了,希望大家通过这篇文章能够全面掌握McHorBarChart组件的series属性配置,在实际开发中灵活运用这些属性创建出各种精美的柱状图效果。如果有任何问题,欢迎在评论区留言讨论,我们下期再见!

相关推荐
yuko09311 分钟前
【手机验证码】手机号格式化光标异常问题
前端
原生高钙2 分钟前
高性能前端埋点上报系统的架构与实现
前端·面试
水痕017 分钟前
nginx一个域名下部署多套前端项目
运维·前端·nginx
Anyin10 分钟前
Spring AI Alibaba - DeepResearch 前端主体 UI 构建
前端·ai编程·trae
非优秀程序员10 分钟前
8 个提升开发者效率的小众 AI 项目
前端·人工智能·后端
河畔一角18 分钟前
一些感悟
前端
excel24 分钟前
理解 JavaScript 中的 for...in 与 for...of 的区别
前端
前端小巷子1 小时前
Webpack 5模块联邦
前端·javascript·面试
玲小珑1 小时前
Next.js 教程系列(十九)图像优化:next/image 与高级技巧
前端·next.js
晓得迷路了1 小时前
栗子前端技术周刊第 91 期 - 新版 React Compiler 文档、2025 HTML 状态调查、Bun v1.2.19...
前端·javascript·react.js