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

Fl Chart双Y轴独立配置:左右标题刻度如何分开设置?

Fl Chart实现左右Y轴刻度独立的方案

Fl Chart原生默认共享Y轴的minY/maxY范围,无法直接让左右两侧刻度轴独立。要实现你要的效果,需要用双图表叠加的思路,具体步骤如下:

  • 准备两个同类型的图表(比如LineChart),分别对应左侧和右侧Y轴
  • 第一个图表配置左侧Y轴的minY、maxY,同时隐藏右侧轴
  • 第二个图表配置右侧Y轴的minY、maxY,隐藏左侧轴,并且将对应数据的Y值按右侧轴范围做比例转换,保证曲线位置匹配
  • 用Stack组件将两个图表叠在一起,视觉上就呈现出左右轴独立的效果

示例代码:

Stack(
  children: [
    // 左侧轴对应图表
    LineChart(
      LineChartData(
        minY: 0,
        maxY: 100, // 左侧轴独立范围
        gridData: FlGridData(show: false),
        borderData: FlBorderData(show: false),
        titlesData: FlTitlesData(
          leftTitles: AxisTitles(
            sideTitles: SideTitles(
              showTitles: true,
              getTitlesWidget: (value, meta) => Text('${value.toInt()}'),
            ),
          ),
          rightTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
          bottomTitles: AxisTitles(
            sideTitles: SideTitles(
              showTitles: true,
              getTitlesWidget: (value, meta) => Text('${value.toInt()}'),
            ),
          ),
          topTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
        ),
        lineBarsData: [
          LineChartBarData(
            spots: [FlSpot(0, 20), FlSpot(1, 50), FlSpot(2, 80)],
            isCurved: true,
            color: Colors.blue,
          ),
        ],
      ),
    ),
    // 右侧轴对应图表
    LineChart(
      LineChartData(
        minY: 0,
        maxY: 10, // 右侧轴独立范围
        gridData: FlGridData(show: false),
        borderData: FlBorderData(show: false),
        titlesData: FlTitlesData(
          leftTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
          rightTitles: AxisTitles(
            sideTitles: SideTitles(
              showTitles: true,
              getTitlesWidget: (value, meta) => Text('${value.toInt()}'),
            ),
          ),
          bottomTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
          topTitles: AxisTitles(sideTitles: SideTitles(showTitles: false)),
        ),
        lineBarsData: [
          LineChartBarData(
            spots: [FlSpot(0, 2), FlSpot(1, 5), FlSpot(2, 8)],
            isCurved: true,
            color: Colors.red,
          ),
        ],
      ),
    ),
  ],
)

注意:右侧图表的Y轴数据需要根据左右轴的范围比例进行转换,比如左侧轴范围0-100,右侧轴0-10,那么左侧的20对应右侧的2,以此类推,确保两条曲线在X轴对齐的前提下,Y轴位置符合各自刻度逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:00:20