SuperAPI AI 工具集

syncfusion-flutter-cartesian-charts

前端与建站

查看项目

更新于 10-16 03:00

技能介绍

用途

Syncfusion Flutter Cartesian Charts(SfCartesianChart)是 syncfusion_flutter_charts 包提供的高性能 Flutter 组件,用于在笛卡尔(X/Y)坐标系上绘制二维图表。它适用于需要在 Flutter 应用中展示折线、面积、柱状、条形、样条、散点、金融、统计等图表的场景,并支持实时数据、丰富交互和深度定制。

主要能力

  • 图表类型:支持 30 多种图表,包括折线图(line、fast line、spline、step line)、面积图(area、spline area、step area、range area、spline range area、堆叠面积及 100% 堆叠)、柱状/条形图(column、bar、range column、堆叠柱状/条形及 100% 堆叠)、散点/气泡图、金融图(candle、OHLC、HiLo、HiLoOpenClose,支持技术指标)、统计图(histogram、box and whisker、error bar)以及瀑布图。
  • 坐标轴:提供五种轴类型——NumericAxis、CategoryAxis、DateTimeAxis、DateTimeCategoryAxis、LogarithmicAxis,并支持标题、标签格式、网格线、刻度线、范围(最小/最大/间隔)、条纹线、多级标签、次轴、轴交叉和反转轴等定制。
  • 交互功能:支持缩放(ZoomPanBehavior,含捏合、鼠标滚轮、方向缩放)、平移、工具提示(TooltipBehavior)、轨迹球(TrackballBehavior)、十字准线(CrosshairBehavior)以及选择行为(点、系列、簇、框选)。
  • 系列定制:可设置颜色、边框、透明度、渐变填充、虚线数组、宽度、点颜色映射、动画、调色板、空点设置等。
  • 图例:支持启用和定位图例、通过图例切换系列可见性、溢出模式(换行、滚动)、自定义图例项和图标。
  • 注释、标记与数据标签:支持 CartesianChartAnnotation(文本和组件叠加)、坐标单位(点、像素、百分比)、MarkerSettings(形状、大小、颜色)、DataLabelSettings(位置、格式、模板、连接线)。
  • 技术指标与趋势线:内置 SMA、EMA、TMA、WMA、MACD、RSI、Stochastic、Bollinger Bands、ATR、CCI、Momentum、AD、ROC 等技术指标,以及线性、指数、多项式、移动平均、幂、对数等趋势线,并支持预测周期。
  • 外观与多图表:可设置背景颜色/图片、绘图区定制、调色板、主题集成,支持在同一屏幕渲染多个图表以及按需/懒加载数据。
  • 回调、方法与导出:提供 onTooltipRender、onDataLabelRender、onZooming 等回调,ChartSeriesController 的 updateDataSource、animate 方法,支持导出为 PNG、PDF、JPEG,并支持本地化、RTL 和无障碍访问。

使用方式

通过终端安装包(不要直接编辑 pubspec.yaml):

flutter pub add syncfusion_flutter_charts

在 Flutter 项目根目录运行该命令,等待成功完成。然后导入:

import 'package:syncfusion_flutter_charts/charts.dart';

最小示例:

class MyChart extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      height: 300,
      child: SfCartesianChart(
        primaryXAxis: CategoryAxis(),
        title: ChartTitle(text: 'Monthly Sales'),
        legend: Legend(isVisible: true),
        tooltipBehavior: TooltipBehavior(enable: true),
        series: <CartesianSeries>[
          LineSeries<ChartData, String>(
            dataSource: [
              ChartData('Jan', 35),
              ChartData('Feb', 28),
              ChartData('Mar', 34),
              ChartData('Apr', 32),
              ChartData('May', 40),
            ],
            xValueMapper: (ChartData d, _) => d.x,
            yValueMapper: (ChartData d, _) => d.y,
            name: 'Sales',
            dataLabelSettings: DataLabelSettings(isVisible: true),
          ),
        ],
      ),
    );
  }
}

class ChartData {
  ChartData(this.x, this.y);
  final String x;
  final double? y;
}

常用模式:

  • 实时数据更新:通过 onRendererCreated 获取 ChartSeriesController,调用 updateDataSource 添加数据点。
  • 多系列:在 series 列表中放置多个系列(如 LineSeries 和 ColumnSeries),分别映射不同字段。
  • 缩放与工具提示:在 initState 中初始化 ZoomPanBehavior 和 TooltipBehavior,并分别赋值给 zoomPanBehavior 和 tooltipBehavior。

关键属性包括 primaryXAxis、primaryYAxis、series、title、legend、tooltipBehavior、zoomPanBehavior、selectionType、annotations、indicators、onTooltipRender、onZooming、palette 等。

适用场景

  • 需要在 Flutter 应用中展示折线、面积、柱状、条形、样条、散点、气泡、金融、统计或瀑布图。
  • 需要配置数值、分类、日期时间或对数坐标轴。
  • 需要添加缩放、平移、工具提示、轨迹球或十字准线交互。
  • 需要定制系列外观(颜色、渐变、标记、数据标签)。
  • 需要添加注释、技术指标或趋势线。
  • 需要导出图表或响应图表回调。
  • 需要支持 RTL、本地化或无障碍访问。

限制

资料中未提供关于收费、价格、平台兼容性、性能上限或具体使用步骤的额外限制说明。