class StackedChartExample extends StatefulWidget {
const StackedChartExample({Key? key}) : super(key: key);
@override
State<StackedChartExample> createState() => _StackedChartExampleState();
}
class _StackedChartExampleState extends State<StackedChartExample> {
@override
Widget build(BuildContext context) {
final List<ChartData> chartData = [
ChartData('A', 12, 10, 14, 20),
ChartData('B', 14, 11, 18, 23),
ChartData('C', 16, 10, 15, 20),
ChartData('D', 18, 16, 18, 24),
ChartData('E', 18, 16, 18, 24),
ChartData('F', 18, 16, 18, 20),
ChartData('G', 18, 16, 18, 30),
ChartData('H', 18, 16, 18, 40),
ChartData('I', 18, 16, 18, 50),
ChartData('J', 12, 10, 14, 20),
ChartData('K', 14, 11, 18, 23),
ChartData('L', 16, 10, 15, 20),
ChartData('M', 18, 16, 18, 24),
ChartData('N', 18, 16, 18, 24),
ChartData('O', 18, 16, 18, 20),
ChartData('P', 18, 16, 18, 30),
ChartData('Q', 18, 16, 18, 40),
ChartData('R', 18, 16, 18, 50)
];
return Center(
child: SfCartesianChart(
zoomPanBehavior: ZoomPanBehavior(
zoomMode: ZoomMode.x,
enablePanning: true,
),
primaryYAxis: NumericAxis(
anchorRangeToVisiblePoints: true,
enableAutoIntervalOnZooming: true,
),
primaryXAxis: CategoryAxis(
zoomFactor: 0.5,
zoomPosition: 0.5,
),
series: <ChartSeries>[
StackedColumnSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.x,
yValueMapper: (ChartData data, _) => data.y1),
StackedColumnSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.x,
yValueMapper: (ChartData data, _) => data.y2),
StackedColumnSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.x,
yValueMapper: (ChartData data, _) => data.y3),
StackedColumnSeries<ChartData, String>(
dataSource: chartData,
xValueMapper: (ChartData data, _) => data.x,
yValueMapper: (ChartData data, _) => data.y4)
],
),
);
}
}
class ChartData {
ChartData(this.x, this.y1, this.y2, this.y3, this.y4);
final String x;
final int y1;
final int y2;
final int y3;
final int y4;
}