【发布时间】:2021-11-07 20:58:34
【问题描述】:
我想为一些 y 点绘制所谓的“水平射线”或“水平线”。对于我的图表,我找不到任何选项。我尝试使用标记甚至数据标签,但它们无关紧要。我目前正在使用同步融合库来绘制图表。这是图片:
我怎样才能做到这一点?
这是我目前使用的代码,笛卡尔图表:
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_charts/charts.dart';
class ChartAl extends StatefulWidget {
@override
_ChartPageState createState() => _ChartPageState();
}
late List<ChartData> chartData;
class _ChartPageState extends State<ChartAl> {
late SelectionBehavior _selectionBehavior;
@override
void initState() {
_selectionBehavior = SelectionBehavior(
// Enables the selection
enable: true);
super.initState();
}
@override
Widget build(BuildContext context) {
chartData = getData();
return Container(
child: SfCartesianChart(
primaryYAxis: NumericAxis(),
primaryXAxis: DateTimeAxis(
intervalType: DateTimeIntervalType.days,
visibleMinimum: chartData[chartData.length - 29].x,
visibleMaximum: chartData[chartData.length - 1].x),
zoomPanBehavior: ZoomPanBehavior(
enablePanning: true,
),
series: <CartesianSeries<ChartData, DateTime>>[
LineSeries(
initialSelectedDataIndexes: <int>[2],
selectionBehavior: SelectionBehavior(
enable: true,
),
// markerSettings: MarkerSettings(
// isVisible: true,
// shape: DataMarkerType.horizontalLine
// ),
// dataLabelSettings: DataLabelSettings(
// // Renders the data label
// isVisible: true),
dataSource: chartData,
xValueMapper: (ChartData tendencias, _) => tendencias.x,
yValueMapper: (ChartData tendencias, _) => tendencias.y,
)
],
annotations: <CartesianChartAnnotation>[
CartesianChartAnnotation(
widget: Container(
height: 1.0,
width: 200,
color: Colors.black,
),
coordinateUnit: CoordinateUnit.point,
x: DateTime(2018, 1, 10),
y: 20,
horizontalAlignment: ChartAlignment.near,
)
],
trackballBehavior: TrackballBehavior(
enable: true,
lineType: TrackballLineType.horizontal,
tooltipSettings:
InteractiveTooltip(enable: true, color: Colors.red)),
),
);
}
}
dynamic getData() {
List<ChartData> data = [];
for (int i = 1; i < 35; i++) {
data.add(ChartData(DateTime(2018, 1, i), getRandomInt(10, 100).toInt()));
}
return data;
}
num getRandomInt(num min, num max) {
final Random random = Random();
return min + random.nextInt((max - min).toInt());
}
class ChartData {
ChartData(this.x, this.y);
final DateTime x;
final int y;
}
我试图用一个有一定宽度的容器来绘制它,但正如你所见,它不起作用。
【问题讨论】:
-
您能否包含您的代码-sn-p,分享您迄今为止尝试过的示例小部件?通过扩展而不是从头开始,上下文将很容易。
-
我添加了你现在可以看到,我想要它用于笛卡尔图表,但它不起作用,我在文档中找不到任何相关内容:help.syncfusion.com/flutter/cartesian-charts/marker-datalabel
标签: java android flutter charts syncfusion