Flutter数据统计插件statistics的使用
Flutter数据统计插件statistics的使用
简介
statistics
是一个用于Flutter和Dart的数据统计库,提供了丰富的数学函数和工具,支持贝叶斯网络(Bayes Net)等高级功能。以下是该库的一些关键特性:
- 数值扩展:为数值列表提供扩展方法,如均值、标准差等。
- 统计数据类:提供了一个
Statistics
类,可以生成包含多种统计信息的对象。 - 贝叶斯网络:支持构建和分析贝叶斯网络,用于理解事件之间的依赖关系并分配概率。
- CSV生成:可以将数据集合转换为CSV格式。
- 高精度算术:支持高精度整数和小数运算。
安装
在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
statistics: ^latest_version
替换latest_version
为最新版本号,可以在pub.dev上查找。
使用示例
数值扩展
import 'package:statistics/statistics.dart';
void main() {
var ns = [10, 20.0, 25, 30];
print('ns: $ns');
var mean = ns.mean;
print('mean: $mean');
var sdv = ns.standardDeviation;
print('sdv: $sdv');
var squares = ns.square;
print('squares: $squares');
}
统计数据类
import 'package:statistics/statistics.dart';
void main() {
var ns = [10, 20.0, 25, 30];
var statistics = ns.statistics;
print('Statistics.max: ${statistics.max}');
print('Statistics.min: ${statistics.min}');
print('Statistics.mean: ${statistics.mean}');
print('Statistics.standardDeviation: ${statistics.standardDeviation}');
print('Statistics.sum: ${statistics.sum}');
print('Statistics.center: ${statistics.center}');
print('Statistics.median: ${statistics.median} -> ${statistics.medianLow} , ${statistics.medianHigh}');
print('Statistics.squaresSum: ${statistics.squaresSum}');
print('Statistics: $statistics');
}
贝叶斯网络
import 'package:statistics/statistics.dart';
void main() {
var bayesNet = BayesianNetwork('cancer');
// C (cancer) = T (true) ; F (false)
bayesNet.addVariable("C", [
'F',
'T',
], [], [
"C = F: 0.99",
"C = T: 0.01",
]);
// X (exam) = P (positive) ; N (negative)
bayesNet.addVariable("X", [
'+P',
'-N',
], [
"C"
], [
"X = N, C = F: 0.91",
"X = P, C = F: 0.09",
"X = N, C = T: 0.10",
"X = P, C = T: 0.90",
]);
// Show the network nodes and probabilities:
print(bayesNet);
var analyser = bayesNet.analyser;
// Ask the probability to have cancer with a positive exam (X = P):
var answer1 = analyser.ask('P(c|x)');
print(answer1); // P(c|x) -> C = T | X = P -> 0.09174311926605506 (0.009000000000000001) >> 917.43%
// Ask the probability to have cancer with a negative exam (X = N):
var answer2 = analyser.ask('P(c|-x)');
print(answer2); // P(c|-x) -> C = T | X = N -> 0.0011087703736556158 (0.001) >> 11.09%
}
CSV生成
import 'package:statistics/statistics.dart';
void main() {
var categories = <String, List<double?>>{
'a': [10.0, 20.0, null],
'b': [100.0, 200.0, 300.0]
};
var csv = categories.generateCSV();
print(csv);
}
高精度算术
import 'package:statistics/statistics.dart';
void main() {
var n1 = DynamicInt.fromInt(123) + Decimal.parse('0.456');
print(n1); // 123.456
var n2 = Decimal.parse('0.1') + Decimal.parse('0.2');
print(n2); // 0.3
// Using `toDecimal` extension to convert an `int` to `Decimal`:
var n3 = 123.toDecimal().powerInt(41); // power with an integer exponent.
print(n3); // 48541095000524544750127162673405880068636916264012200797813591925035550682238127143323.0
var n4 = 2.toDecimal().powerDouble(2.2); // power with a double exponent.
print(n4); // 4.594793419988
// Using `toDynamicInt` extension to convert an `int` to `DynamicInt`:
var n5 = 2.toDynamicInt().powerInt(-1); // power with a negative exponent.
print(n5); // 0.5
}
输出示例
ns: [10, 20.0, 25, 30]
mean: 21.25
sdv: 6.931585316505886
squares: [100, 400.0, 625, 900]
Statistics.max: 30
Statistics.min: 10
Statistics.mean: 21.25
Statistics.standardDeviation: 7.39509972887452
Statistics.sum: 85.0
Statistics.center: 25
Statistics.median: 22.5 -> 20.0 , 25
Statistics.squaresSum: 2025.0
Statistics: {~21.25 +-7.3950 [10..(25)..30] #4}
---
CSV:
#,a,b
1,10,100
2,20,200
3,0,300
总结
statistics
插件为Flutter和Dart开发者提供了一套强大的数据统计工具,包括数值扩展、统计数据类、贝叶斯网络、CSV生成和高精度算术等功能。通过这些功能,你可以轻松地进行数据处理和分析。希望本文档能帮助你更好地理解和使用这个插件。
更多关于Flutter数据统计插件statistics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据统计插件statistics的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用statistics
插件进行数据统计的示例代码。不过需要注意的是,Flutter本身并没有一个官方的statistics
插件,所以我将假设你指的是一个第三方库或者自定义的统计功能。为了演示目的,我将创建一个简单的统计功能,比如计算一组数字的平均值、最大值和最小值。
首先,你需要在你的Flutter项目中创建一个统计功能的Dart文件,比如statistics.dart
:
// statistics.dart
class Statistics {
List<num> numbers;
Statistics(this.numbers);
num getAverage() {
if (numbers.isEmpty) return 0.0;
num sum = numbers.reduce((a, b) => a + b);
return sum / numbers.length;
}
num getMax() {
return numbers.isEmpty ? 0.0 : numbers.reduce((a, b) => math.max(a, b));
}
num getMin() {
return numbers.isEmpty ? 0.0 : numbers.reduce((a, b) => math.min(a, b));
}
}
然后,在你的主应用程序文件中(比如main.dart
),你可以使用这个统计功能来计算一组数字的平均值、最大值和最小值:
import 'package:flutter/material.dart';
import 'statistics.dart'; // 导入自定义的统计功能
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Statistics Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<num> numbers = [10, 20, 30, 40, 50];
late Statistics statistics;
@override
void initState() {
super.initState();
statistics = Statistics(numbers);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Statistics Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Average: ${statistics.getAverage()}',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
'Max: ${statistics.getMax()}',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
'Min: ${statistics.getMin()}',
style: TextStyle(fontSize: 24),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个Statistics
类,它接受一个数字列表作为参数,并提供了计算平均值、最大值和最小值的方法。然后,在MyHomePage
中,我们初始化了一个Statistics
对象,并使用它来计算和显示一组数字的平均值、最大值和最小值。
请注意,这只是一个简单的示例,用于展示如何在Flutter项目中实现自定义的统计功能。如果你指的是一个具体的第三方statistics
插件,请提供更多详细信息,以便我能给出更具体的代码示例。