用途
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、本地化或无障碍访问。
限制
资料中未提供关于收费、价格、平台兼容性、性能上限或具体使用步骤的额外限制说明。