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

如何使用OxyPlot结合SkiaSharp绘制垂直柱状图

解决OxyPlot BarSeries绘制垂直柱状图的问题

问题原因

你遇到的异常是因为BarSeries默认使用水平方向(Horizontal),此时它要求Y轴必须是CategoryAxis。直接交换轴的Position但没修改BarSeries的方向,就会导致OxyPlot找不到符合要求的轴,抛出异常。另外旧版的ColumnSeries确实已被移除,现在统一用BarSeries通过设置Orientation来切换水平/垂直样式。

解决方案

修改代码时需要同时完成两个关键操作:

  • 调整坐标轴的位置:将CategoryAxis移到X轴(Bottom),LinearAxis移到Y轴(Left)
  • 给每个BarSeries设置Orientation = BarSeriesOrientation.Vertical

修改后的完整代码

var model = new PlotModel();

// 分类轴放到底部(X轴)
var categoryAxis = new CategoryAxis { Position = AxisPosition.Bottom };
// 数值轴放到左侧(Y轴)
var valueAxis1 = new LinearAxis
{
    Title = "Value Axis 1",
    Position = AxisPosition.Left,
    MinimumPadding = 0.06,
    MaximumPadding = 0.06,
    ExtraGridlines = new[] {0d},
    Key = "y1"
};
model.Axes.Add(categoryAxis);
model.Axes.Add(valueAxis1);

var series = new List<BarSeries>
{
    new BarSeries { Orientation = BarSeriesOrientation.Vertical },
    new BarSeries { Orientation = BarSeriesOrientation.Vertical },
};

var rnd = new Random(1);
foreach (var s in series)
{
    for (var i = 0; i < 4; i++)
        s.Items.Add(new BarItem() { Value = rnd.Next(0, 100) });
    model.Series.Add(s);
}

关键说明

  • BarSeriesOrientation.Vertical:告诉OxyPlot将柱状图垂直绘制,此时它会自动寻找X轴上的CategoryAxis,与我们调整后的轴位置匹配
  • 轴的Key可以根据需要修改(示例中把原来的"x1"改成"y1"更符合语义,不是必须项)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:10:28