Skip to content

3D 面积图

3D 面积图在三维空间中展示数据趋势和面积填充效果,通过多个系列在 Z 轴方向排列,直观展示数据变化趋势,适用于销售趋势、数据波动、多维度趋势分析等场景。

快速开始

最简单的 3D 面积图需要配置 X 轴和多个系列数据:

vue
<template>
  <RayArea3D :option="chartOption" />
</template>

<script setup>
import { ref } from 'vue';
import { RayArea3D } from 'raychart';

const chartOption = ref({
  xAxis3D: {
    data: ['周一', '周二', '周三', '周四', '周五'],
    name: '星期',
  },
  yAxis3D: {
    name: '分数',
  },
  series: [
    {
      type: 'area3D',
      name: '数学',
      data: [85, 92, 78, 95, 88],
      color: ['#667eea'],
    },
    {
      type: 'area3D',
      name: '语文',
      data: [78, 85, 82, 88, 75],
      color: ['#f093fb'],
    },
  ],
});
</script>

智能默认值

自动配置面积填充透明度、标签位置、四点光照系统和 Z 轴系列间隔。

核心配置

坐标轴配置

属性类型默认值说明
xAxis3D.datastring[]-X 轴数据(必填)
xAxis3D.namestring-X 轴名称
yAxis3D.namestring-Y 轴名称(数值轴)

多系列排列

每个系列会在 Z 轴方向自动排列,无需手动配置 zAxis3D。系列顺序决定 Z 轴位置。

数据配置

属性类型默认值说明
series.datanumber[]-系列数据(必填)
series.namestring-系列名称
series.colorstring[]-系列颜色

面积样式配置

属性类型默认值说明
series.areaStyle.opacitynumber0.65面积填充透明度(0-1)
标签配置(可选)

通过 series.label 配置数据点标签(标签固定显示在数据点上方):

javascript
label: {
  show: true,          // 显示标签
  formatter: '{value}', // 文本格式化(支持 {value} / {name})
  distance: 0.3,       // 标签与数据点的距离(默认 0.3)
  fontSize: 11,        // 字体大小
  color: '#333',       // 字体颜色
  fontWeight: '600'    // 字体粗细
}
网格配置(可选)

通过 grid3D 配置三维空间尺寸:

javascript
grid3D: {
  show: true,       // 显示网格边框
  boxWidth: 20,     // 宽度
  boxDepth: 20,     // 深度
  boxHeight: 10     // 高度
}

常见场景

基础 3D 面积图

展示考试成绩趋势:

vue
<template>
  <RayArea3D :option="chartOption" />
</template>

<script setup>
import { ref } from 'vue';
import { RayArea3D } from 'raychart';

const chartOption = ref({
  xAxis3D: {
    data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
    name: '星期',
  },
  yAxis3D: {
    name: '分数',
  },
  series: [
    {
      type: 'area3D',
      name: '数学',
      data: [85, 92, 78, 95, 88, 72, 90],
      color: ['#667eea'],
      areaStyle: { opacity: 0.65 },
      label: {
        show: true,
        fontSize: 11,
        color: '#333',
      },
    },
    {
      type: 'area3D',
      name: '语文',
      data: [78, 85, 82, 88, 75, 80, 86],
      color: ['#f093fb'],
      areaStyle: { opacity: 0.65 },
    },
    {
      type: 'area3D',
      name: '英语',
      data: [72, 80, 88, 76, 84, 90, 82],
      color: ['#4facfe'],
      areaStyle: { opacity: 0.65 },
    },
  ],
});
</script>

多城市销售趋势

展示多个城市的月度销售趋势:

vue
<script setup>
const chartOption = ref({
  xAxis3D: {
    data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月'],
    name: '月份',
  },
  yAxis3D: {
    name: '销售额(万元)',
  },
  series: [
    {
      type: 'area3D',
      name: '北京',
      data: [120, 145, 160, 180, 155, 190, 210, 200],
      color: ['#5470c6'],
      areaStyle: { opacity: 0.7 }, // 增加透明度
      label: {
        show: true,
        fontSize: 10,
      },
    },
    {
      type: 'area3D',
      name: '上海',
      data: [100, 130, 150, 170, 145, 175, 195, 185],
      color: ['#91cc75'],
      areaStyle: { opacity: 0.7 },
      label: {
        show: true,
        fontSize: 10,
      },
    },
    {
      type: 'area3D',
      name: '广州',
      data: [90, 110, 135, 155, 130, 160, 180, 170],
      color: ['#fac858'],
      areaStyle: { opacity: 0.7 },
      label: {
        show: true,
        fontSize: 10,
      },
    },
  ],
});
</script>

波浪面积图

使用渐变色展示数据波动:

vue
<script setup>
const chartOption = ref({
  xAxis3D: {
    data: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
    name: '月份',
  },
  yAxis3D: {
    name: '数值',
  },
  series: [
    {
      type: 'area3D',
      name: 'Series A',
      data: [30, 80, 50, 90, 40, 70],
      color: ['#4facfe'], // 蓝色渐变
      areaStyle: { opacity: 0.6 },
    },
    {
      type: 'area3D',
      name: 'Series B',
      data: [60, 40, 85, 35, 75, 55],
      color: ['#f093fb'], // 粉色渐变
      areaStyle: { opacity: 0.6 },
    },
    {
      type: 'area3D',
      name: 'Series C',
      data: [45, 65, 30, 70, 55, 80],
      color: ['#43e97b'], // 绿色渐变
      areaStyle: { opacity: 0.6 },
    },
  ],
});
</script>

自定义网格空间

通过 grid3D 配置三维空间尺寸:

vue
<script setup>
const chartOption = ref({
  grid3D: {
    show: true, // 显示网格边框
    boxWidth: 25, // 增大宽度
    boxDepth: 25, // 增大深度
    boxHeight: 12, // 增大高度
  },
  xAxis3D: {
    data: ['Q1', 'Q2', 'Q3', 'Q4'],
    name: '季度',
  },
  yAxis3D: {
    name: '营收(亿元)',
  },
  series: [
    {
      type: 'area3D',
      name: '产品A',
      data: [120, 150, 180, 200],
      color: ['#5470c6'],
      areaStyle: { opacity: 0.7 },
    },
    {
      type: 'area3D',
      name: '产品B',
      data: [100, 130, 160, 190],
      color: ['#91cc75'],
      areaStyle: { opacity: 0.7 },
    },
  ],
});
</script>

组件属性

属性类型默认值说明
optionRayChartOption-图表配置对象(必填)
widthstring | number'100%'图表宽度
heightstring | number'600px'图表高度

相关文档

基础学习

进阶主题

API 参考

其他图表类型

在线示例