Skip to content

TrendChart 趋势图

用于展示小型趋势、指标变化和概览图表。组件自身使用 width: 100%; height: 100%,使用时需要给图表或外层容器设置明确高度。

基础用法

vue
<template>
  <x-trend-chart :dataset="dataset" status="success" class="chart" />
</template>

<script setup lang="ts">
const dataset = [12, 18, 14, 24, 32, 28, 36, 42];
</script>

<style scoped>
.chart {
  height: 180px;
}
</style>

状态主题

vue
<template>
  <x-trend-chart :dataset="dataset" status="primary" class="chart" />
  <x-trend-chart :dataset="dataset" status="warning" class="chart" />
  <x-trend-chart :dataset="dataset" status="danger" class="chart" />
</template>

网格与标签

下周12223242
vue
<template>
  <x-trend-chart
    :dataset="dataset"
    status="primary"
    class="chart"
    padding="28 24 32 42"
    :grid="{ verticalLines: true, horizontalLines: true, horizontalLinesNumber: 4 }"
    :labels="labels"
  />
</template>

<script setup lang="ts">
const dataset = [12, 18, 14, 24, 32, 28, 36, 42];
const labels = {
  xLabels: ['一', '二', '三', '四', '五', '六', '日', '下周'],
  yLabels: 4,
  yLabelsTextFormatter: (value: number) => `${Math.round(value)}`,
};
</script>

交互事件

等待鼠标移动
vue
<template>
  <x-trend-chart
    :dataset="dataset"
    interactive
    class="chart"
    @mouse-move="handleMouseMove"
  />
  <p>{{ hoverInfo }}</p>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const dataset = [12, 18, 14, 24, 32, 28, 36, 42];
const hoverInfo = ref('等待鼠标移动');
const handleMouseMove = (event: { index: number; data: number } | null) => {
  hoverInfo.value = event ? `index: ${event.index}, value: ${event.data}` : '已离开';
};
</script>

自定义主题

vue
<template>
  <x-trend-chart :dataset="dataset" :theme="customTheme" class="chart" />
</template>

<script setup lang="ts">
const dataset = [12, 18, 14, 24, 32, 28, 36, 42];
const customTheme = {
  stroke: { color: '#7c3aed' },
  fill: { color: '#7c3aed', opacity: 0.16 },
  point: { color: '#7c3aed', width: 3 },
  axisLine: { color: '#7c3aed', width: 1, opacity: 0.7 },
};
</script>

边界数据

等值数据
单点数据
空数据暂无数据
vue
<template>
  <x-trend-chart :dataset="[10, 10, 10, 10, 10]" class="chart" />
  <x-trend-chart :dataset="[16]" class="chart" />
  <x-trend-chart :dataset="[]" class="chart" />
</template>

按需导入

ts
import { TrendChart } from 'x-next';

Props

参数说明类型默认值
dataset趋势数据集number[][]
status状态主题'primary' | 'success' | 'warning' | 'strong' | 'danger' | 'info''info'
grid网格配置{ verticalLines?: boolean; verticalLinesNumber?: number; horizontalLines?: boolean; horizontalLinesNumber?: number }null
labels标签配置{ xLabels: string[]; yLabels: number; yLabelsTextFormatter: (value: number) => string }null
max最大值number数据最大值
min最小值number数据最小值
padding绘制边距,只支持 1-4 个非负数字string'5'
interactive是否开启鼠标交互booleanfalse
theme自定义主题,会与状态主题按层级合并Theme{}

Events

事件名说明回调参数
mouse-move鼠标移动到图表时触发,interactive=true 时使用{ index: number; data: number } | null

使用说明

  • 组件需要明确高度,可直接给组件 class 设置 height
  • 空数组会渲染空态文案,不会抛错。
  • 单点数据会渲染为一个点。
  • 所有值相同时,趋势线会绘制在图表中线。