我可以从具有多个轴的 oxyplot 图表中删除裁剪吗?
Can I remove clipping from a oxyplot chart with multiple axes?
我有一个用 oxyplot 创建的包含多个 y 轴的图表 library.When 我缩小了一个 y 轴我注意到线被剪掉了。
我可以将裁剪区域扩大到整个图表的区域大小吗?
可以使用整个图表区域的多轴图表在医疗数据中使用很多。
我从 github 拉取了最新的开发分支,并更改了 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 时,不再有剪裁。
我有一个用 oxyplot 创建的包含多个 y 轴的图表 library.When 我缩小了一个 y 轴我注意到线被剪掉了。
我可以将裁剪区域扩大到整个图表的区域大小吗? 可以使用整个图表区域的多轴图表在医疗数据中使用很多。
我从 github 拉取了最新的开发分支,并更改了 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 时,不再有剪裁。