我能从具有多个轴的OxyPlot图表中删除剪切吗?

3
我有一个使用oxyplot库创建的带有多个y轴的图表。当我将其中一个y轴缩小时,我注意到线条被裁剪了。 箭头指示线条被裁剪的位置 我能扩展裁剪区域以至于它可以覆盖整个图表吗? 具有多个轴并可以使用整个图表区域的图表在医学数据方面得到广泛应用。 脑电图记录
1个回答

2

我从Github上拉取了最新的develop分支,并更改了XYAxisSeries.cs源文件中GetClippingRect()方法中的代码:

protected OxyRect GetClippingRect()
    {
        double minX,minY,maxX,maxY;
        if (this.PlotModel.AxisSizeIsClippingArea)
        {
            minX = Math.Min(this.XAxis.ScreenMin.X, this.XAxis.ScreenMax.X);
            minY = Math.Min(this.YAxis.ScreenMin.Y, this.YAxis.ScreenMax.Y);
            maxX = Math.Max(this.XAxis.ScreenMin.X, this.XAxis.ScreenMax.X);
            maxY = Math.Max(this.YAxis.ScreenMin.Y, this.YAxis.ScreenMax.Y);
        }
        else
        {
            var yAxes = this.PlotModel.Axes.Where(ax => ax.Position == AxisPosition.Left || ax.Position == AxisPosition.Right);
            var xAxes = this.PlotModel.Axes.Where(ax => ax.Position == AxisPosition.Bottom || ax.Position == AxisPosition.Top);
            maxY = yAxes.Max(ax => Math.Max(ax.ScreenMin.Y, ax.ScreenMax.Y));
            minY = yAxes.Min(ax => Math.Min(ax.ScreenMin.Y, ax.ScreenMax.Y));
            maxX = xAxes.Max(ax => Math.Max(ax.ScreenMax.X, ax.ScreenMax.X));
            minX = xAxes.Min(ax => Math.Min(ax.ScreenMin.X, ax.ScreenMin.X));
        }
        return new OxyRect(minX, minY, maxX - minX, maxY - minY);
    }

我向PlotModel添加了一个属性AxisSizeIsClippingArea,默认为true。当它是false时,不会获取当前轴的最小值和最大值,而是计算所有轴的最小值和最大值。现在当AxisSizeIsClippingArea为false时,就不再有裁剪了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接