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

OxyPlot时间序列图表两侧Y轴同步缩放配置问题

解决OxyPlot两侧Y轴同步缩放的问题

这个问题的核心是OxyPlot默认会将每个轴视为独立的交互对象,缩放/平移时只会联动和当前操作轴关联的一组轴。要让左右两侧Y轴同步响应底部时间轴的交互,只需要给两个Y轴设置相同的ZoomKey属性即可——这个属性会把多个轴归入同一个缩放组,交互时组内所有轴都会同步调整范围。

修改后的代码示例

// 左侧Y轴:添加统一的缩放组Key
model.Axes.Add(new LinearAxis() { 
    MajorStep = 0.1, 
    Minimum = 0, 
    Maximum = 1, 
    Position = AxisPosition.Left, 
    Title = "Title Axis", 
    AxisTitleDistance = 10,
    ZoomKey = "SharedYAxis" // 标记为同一缩放组
});

// 右侧Y轴:设置和左侧相同的ZoomKey
model.Axes.Add(new LinearAxis() { 
    Key = "RightYAxis", 
    MajorStep = 0.1, 
    Minimum = 0, 
    Maximum = 1, 
    Position = AxisPosition.Right,
    ZoomKey = "SharedYAxis" // 加入同一缩放组
});

DateTimeAxis dta = new DateTimeAxis() { 
    Key = "DateTimeAxis", 
    IntervalType = SetDateTimeIntervalType(minDate, maxDate), 
    StringFormat = "dd/MM/yyyy", 
    Position = AxisPosition.Bottom, 
    Minimum = DateTimeAxis.ToDouble(minDate), 
    Maximum = DateTimeAxis.ToDouble(maxDate), 
    Title = "Date", 
    AxisTitleDistance = 10 
};
dta.AxisChanged += new EventHandler<AxisChangedEventArgs>(AxisChanged);
model.Axes.Add(dta);

原理说明

  • ZoomKey是OxyPlot中用于轴分组的核心属性,同一Key下的轴会同步响应缩放、平移等交互操作。
  • 确保两个Y轴的初始Minimum和Maximum值完全一致,这样在交互前就保持刻度同步,交互过程中也会始终保持范围匹配。
  • 这个设置对缩放和平移操作都生效:不管你操作底部时间轴还是任意一侧Y轴,两侧Y轴都会同步变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:42:41