fl_heatmap은 두 차원의 데이터를 시각화하기 위해 사용할 수 있는 사용자 정의 가능한 히트맵 위젯을 제공하는 Flutter 패키지입니다. 색상 테마, 셀 크기, 레이블 커스터마이징과 같은 다양한 스타일링 옵션을 지원하여 데이터셋 내 밀도 또는 빈도 패턴을 표시하는 데 이상적입니다. 여러 플랫폼에서 Flutter 앱에 원활하게 통합되며 부드러운 렌더링과 반응형 동작을 제공합니다. 특히 분석 대시보드, 지리 정보 시각화 및 시계열 히트맵에 유용합니다. 성능을 고려해 설계되었으며, 대규모 데이터셋을 효율적으로 처리하면서도 깔끔하고 직관적인 API를 유지합니다.
사용 사례
데이터 밀도 시각화
분석 대시보드
지리공간 데이터 표현
시계열 히트맵
사용자 활동 추적
주요 기능
사용자 정의 가능한 색상 테마
사용자 정의 가능한 셀 크기
레이블 및 툴팁 지원
반응형 디자인
대규모 데이터 세트에 대한 효율적인 렌더링
크로스 플랫폼 호환성
적합한 대상
데이터 시각화 기능을 구축하는 개발자
분석 대시보드를 만드는 팀
데이터에서 패턴 인식이 필요한 앱
상호작용 차트를 갖춘 교육 도구
공간 또는 시간 데이터를 포함하는 프로젝트
고려 사항
2차원 데이터 구조에 대한 이해가 필요합니다
매우 큰 데이터 세트에서는 성능이 달라질 수 있습니다
툴팁을 제외한 내장 상호작용은 제한적
스타일링 옵션은 최적의 외관을 위해 신중한 구성이 필요합니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
fl_heatmap
A heatmap widget for Flutter apps.
Usage
1 - Depend on it
Add it to your package's pubspec.yaml file
dependencies:fl_heatmap:^0.1.0
2 - Install it
Install packages from the command line
flutter packages get
3 - Use it
This is an example for the months of four years:
import'package:fl_heatmap/fl_heatmap.dart';
class_ExampleStateextendsState<ExampleApp> {
HeatmapItem? selectedItem;
lateHeatmapData heatmapData;
@overridevoidinitState() {
_initExampleData();
super.initState();
}
void_initExampleData() {
const rows = [
'2022',
'2021',
'2020',
'2019',
];
const columns = [
'Jan',
'Feb',
'Mär',
'Apr',
'Mai',
'Jun',
'Jul',
'Aug',
'Sep',
'Okt',
'Nov',
'Dez',
];
final r = Random();
constString unit = 'kWh';
heatmapData = HeatmapData(rows: rows, columns: columns, items: [
for (int row = 0; row < rows.length; row++)
for (int col = 0; col < columns.length; col++)
HeatmapItem(
value: r.nextDouble() * 6,
unit: unit,
xAxisLabel: columns[col],
yAxisLabel: rows[row]),
]);
}
@overrideWidgetbuild(BuildContext context) {
final title = selectedItem != null
? '${selectedItem!.value.toStringAsFixed(2)}${selectedItem!.unit}'
: '--- ${heatmapData.items.first.unit}';
final subtitle = selectedItem != null
? '${selectedItem!.xAxisLabel}${selectedItem!.yAxisLabel}'
: '---';
returnMaterialApp(
home: Scaffold(
appBar: AppBar(
title: constText('Heatmap plugin example app'),
),
body: SingleChildScrollView(
child: Column(
children: [
constSizedBox(height: 16),
Text(title, textScaleFactor: 1.4),
Text(subtitle),
constSizedBox(height: 8),
Heatmap(
onItemSelectedListener: (HeatmapItem? selectedItem) {
debugPrint(
'Item ${selectedItem?.yAxisLabel}/${selectedItem?.xAxisLabel} with value ${selectedItem?.value} selected');
setState(() {
this.selectedItem = selectedItem;
});
},
rowsVisible: 5, // Only the first 5 rows are visible
heatmapData: heatmapData)
],
),
),
),
);
}
}
If necessary you can inherit from HeatmapItem and attach some payload, e.g. the electricity costs for the consumption: