Flutter 平移和放大时间序列条形图-图表\u颤振
我正在使用图表来创建颤振中的一些时间序列条形图。我在寻找一种方法,一次显示受控数量的缩放条,并为其余条提供一个滑块。 我可以使用BarCharts()完成上述操作,但不能使用TimeSeriesCharts()。我尝试了以下链接中提出的建议,其中提出了类似的问题: 但它们都没有对这一观点产生任何影响。有没有办法在酒吧里只展示5天 这是我的密码Flutter 平移和放大时间序列条形图-图表\u颤振,flutter,flutter-web,Flutter,Flutter Web,我正在使用图表来创建颤振中的一些时间序列条形图。我在寻找一种方法,一次显示受控数量的缩放条,并为其余条提供一个滑块。 我可以使用BarCharts()完成上述操作,但不能使用TimeSeriesCharts()。我尝试了以下链接中提出的建议,其中提出了类似的问题: 但它们都没有对这一观点产生任何影响。有没有办法在酒吧里只展示5天 这是我的密码 import 'package:bar_wow/subscriber_series.dart'; import 'package:charts_fl
import 'package:bar_wow/subscriber_series.dart';
import 'package:charts_flutter/flutter.dart' as charts;
import 'package:flutter/material.dart';
class SubscriberChart extends StatefulWidget{
final List<charts.Series<SubscriberSeries, DateTime>> data;
final bool animate;
SubscriberChart(this.data, this.animate);
@override
State<StatefulWidget> createState() => new _SelectionCallbackState();
}
class _SelectionCallbackState extends State<SubscriberChart> {
DateTime _time;
Map<String, num> _measures;
_onSelectionChanged(charts.SelectionModel model) {
final selectedDatum = model.selectedDatum;
DateTime time;
final measures = <String, num>{};
if (selectedDatum.isNotEmpty) {
time = selectedDatum.first.datum.time;
selectedDatum.forEach((charts.SeriesDatum datumPair) {
measures[datumPair.series.displayName] = datumPair.datum.subscribers;
});
}
setState(() {
_time = time;
_measures = measures;
});
}
@override
Widget build(BuildContext context) {
final children = <Widget>[
new Container(
height: 400,
padding: EdgeInsets.all(20),
child: Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
Expanded(
child: new charts.TimeSeriesChart(
widget.data,
animate: widget.animate,
defaultRenderer: new charts.BarRendererConfig<DateTime>(
groupingType: charts.BarGroupingType.groupedStacked,
//barRendererDecorator: new charts.BarLabelDecorator<String>(),
),
defaultInteractions: false,
behaviors: [
new charts.SelectNearest(), new charts.DomainHighlighter(),
new charts.ChartTitle(
'Response Time',
behaviorPosition: charts.BehaviorPosition.top,
titleOutsideJustification: charts.OutsideJustification.start,
innerPadding: 18
),
new charts.ChartTitle(
'Time →',
behaviorPosition: charts.BehaviorPosition.bottom,
titleOutsideJustification:
charts.OutsideJustification.middleDrawArea),
new charts.ChartTitle(
'Aggregate →',
behaviorPosition: charts.BehaviorPosition.start,
titleOutsideJustification:
charts.OutsideJustification.middleDrawArea),
new charts.SeriesLegend(),
new charts.SlidingViewport(),
new charts.PanAndZoomBehavior(),
],
domainAxis: new DateTimeAxisSpec(
viewport: charts.DateTimeExtents(start: DateTime(2020,5,7), end: DateTime.now().add(Duration(days: 5 ))),
),
selectionModels: [
new charts.SelectionModelConfig(
type: charts.SelectionModelType.info,
changedListener: _onSelectionChanged,
)
],
),
),
],
),
),
),
),
];
if (_time != null) {
children.add(new Padding(
padding: new EdgeInsets.only(top: 5.0),
child: new Text(_time.toString())));
}
_measures?.forEach((String series, num value) {
children.add(new Text('$series: $value'));
});
return new Container(child:Padding(padding:EdgeInsets.all(10),child:Column(children: children),),);
}
}
import'package:bar_wow/subscriber_series.dart';
以图表形式导入“包:图表\颤振/颤振.省道”;
进口“包装:颤振/材料.省道”;
类SubscriberChart扩展StatefulWidget{
最终清单数据;
最后的布尔动画;
SubscriberChart(this.data,this.animate);
@凌驾
State createState()=>new _SelectionCallbackState();
}
类_SelectionCallbackState扩展状态{
日期时间;
地图测量;
_onSelectionChanged(charts.SelectionModel模型){
最终选定数据=模型。选定数据;
日期时间;
最后措施={};
if(selectedDatum.isNotEmpty){
时间=所选的datum.first.datum.time;
已选择的数据格式((charts.seriesdatam datumPair){
度量值[datumPair.series.displayName]=datumPair.datum.subscribers;
});
}
设置状态(){
_时间=时间;
_措施=措施;
});
}
@凌驾
小部件构建(构建上下文){
最终子女=[
新容器(
身高:400,
填充:边缘设置。全部(20),
孩子:卡片(
孩子:填充(
填充:常数边集全部(8.0),
子:列(
儿童:[
扩大(
孩子:新图表(
widget.data,
动画:widget.animate,
defaultRenderer:new charts.dererConfig(
groupingType:charts.BarGroupingType.groupedStacked,
//BallenderCorator:新图表。BarlabelCorator(),
),
默认交互:false,
行为:[
新建图表。选择最近的(),新建图表。DomainHighlighter(),
新图表。图表标题(
“响应时间”,
behaviorPosition:charts.behaviorPosition.top,
标题外部对齐:charts.OutsideJustification.start,
内部填充:18
),
新图表。图表标题(
”“是时候了→',
behaviorPosition:charts.behaviorPosition.bottom,
标题外部理由:
图表。外部对齐。中间绘图区域),
新图表。图表标题(
"总量",→',
behaviorPosition:charts.behaviorPosition.start,
标题外部理由:
图表。外部对齐。中间绘图区域),
新图表。系列图例(),
新图表。滑动视口(),
新图表。PanAndZoomBehavior(),
],
domainAxis:新的DateTimeAxisSpec(
viewport:charts.DateTimeExtents(开始:DateTime(2020,5,7),结束:DateTime.now().add(持续时间:5天)),
),
选择型号:[
新建charts.SelectionModelConfig(
类型:charts.SelectionModelType.info,
changedListener:_onSelectionChanged,
)
],
),
),
],
),
),
),
),
];
如果(_time!=null){
添加(新的填充)(
填充:仅限新边缘组(顶部:5.0),
子:新文本(_time.toString());
}
_度量?.forEach((字符串系列,数值){
添加(新文本(“$series:$value”);
});
返回新容器(子容器:Padding(Padding:EdgeInsets.all(10),子容器:Column(子容器:children),,);
}
}