You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Flutter中SfCartesianChart柱状图的文本内容?

修改SfCartesianChart各类文本的方法

下面针对你图表里不同位置的文本,给出具体修改方式:

1. 修改图表标题

直接在ChartTitle组件中修改text字段更换内容,textStyle调整样式:

title: ChartTitle(
  text: '学生GPA统计', // 替换成你需要的标题文本
  textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.black87), // 自定义字体样式
),

2. 修改X轴分类标签

方法一:直接修改数据源

把_SalesData的year字段替换为目标文本即可:

List<_SalesData> data = [
  _SalesData('第1学期', 3.1),
  _SalesData('第2学期', 3.23),
  _SalesData('第3学期', 3.39),
  // ... 其余数据依次修改
];

方法二:通过轴的labelFormatter自定义

不想改动数据源时,可在CategoryAxis中配置labelFormatter实现文本映射:

primaryXAxis: CategoryAxis(
  labelFormatter: (dynamic value, ChartAxisLabel label) {
    final labelMap = {
      '1': '第一学期',
      '2': '第二学期',
      '3': '第三学期',
      // ... 补充其余映射关系
    };
    return ChartAxisLabel(labelMap[value] ?? value, label.textStyle);
  },
),

3. 修改柱子上的数据标签

默认显示Y轴数值,可通过dataLabelMapper自定义内容,dataLabelSettings调整样式:

ColumnSeries(
  // ... 其他原有配置
  dataLabelMapper: (_SalesData sales, _) => '${sales.sales.toStringAsFixed(2)}', // 自定义显示文本,比如保留两位小数
  dataLabelSettings: DataLabelSettings(
    isVisible: true,
    textStyle: TextStyle(color: Colors.white, fontSize: 11, fontWeight: FontWeight.w500), // 修改字体颜色、大小等
  ),
),

4. 修改Tooltip提示文本

方式一:用format格式化显示

tooltipBehavior: TooltipBehavior(
  enable: true,
  format: '学期: point.x\nGPA: point.y', // 自定义提示内容格式
),

方式二:用tooltipMapper完全自定义内容

tooltipBehavior: TooltipBehavior(enable: true),
ColumnSeries(
  // ... 其他原有配置
  tooltipMapper: (_SalesData sales, _) => '学期${sales.year}的GPA为${sales.sales.toStringAsFixed(2)}',
),

5. 修改Y轴数值标签

若要格式化Y轴的数值(比如统一保留1位小数),配置primaryYAxis的labelFormatter:

primaryYAxis: NumericAxis(
  labelFormatter: (dynamic value, ChartAxisLabel label) {
    return ChartAxisLabel(value.toStringAsFixed(1), label.textStyle);
  },
),

内容的提问来源于stack exchange,提问作者sharon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:25:16