I have large sorted list of lists, where each sublist keeps elements of specific day. I’m trying to represent this data using SfCartesianChart with multiple charts, but in my case each day-list have random number of items.
One of results: result
And what I'm trying to display: expected
Also I would like to create 2-leveled label with number of column and day date. I've tried many approaches, but multiple ColumnSeries doesn't seem right to me... Here's my simplest version of code:
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
void main() {
runApp(const MyHomePage());
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final List<MyEvent> dayOne = <MyEvent>[
MyEvent('2023-07-01T15.22', 11),
MyEvent('2023-07-01T17.43', 10),
MyEvent('2023-07-01T19.44', 16),
MyEvent('2023-07-01T23.34', 13),
];
final List<MyEvent> dayTwo = <MyEvent>[
MyEvent('2023-12-23T08.13', 3),
MyEvent('2023-12-23T19.55', 4),
];
final List<MyEvent> dayThree = <MyEvent>[
MyEvent('2023-12-27T06.04', 14),
MyEvent('2023-12-27T10.13', 12),
MyEvent('2023-12-27T11.46', 11),
];
final List<MyEvent> dayFour = <MyEvent>[
MyEvent('2023-12-31T06.04', 5),
];
late List<List<MyEvent>> list = [dayOne,dayTwo, dayThree, dayFour];
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: SizedBox(
height: 300.0,
child: SfCartesianChart(
primaryXAxis: CategoryAxis(
axisLabelFormatter: (details){
return ChartAxisLabel(details.text.substring(8,10), const TextStyle(fontSize: 8.0));
}
),
primaryYAxis: NumericAxis(),
series: List.generate(list.length, (index) {
return ColumnSeries(
dataSource: list[index],
xValueMapper: (MyEvent event, i) => event.date,
yValueMapper: (MyEvent event, _) => event.value,
);
}),
),
),
),
),
);
}
}