通过模板化lineseries的WPF样条曲线图
WPF spline curve chart by templating lineseries
我的应用程序要求创建样条图而不是线条图。我知道 WPF 不直接提供 splineseries。
如何自定义(模板)lineseries图表来显示曲线图,我不想使用任何第三方付费工具。
谢谢
如果你所说的样条系列是平滑线系列,你可以使用OxyPlot(当然是免费的)。使用 LineSeries
并将 Smooth
属性 设置为 true
:
这里有一个例子:
public MainWindow()
{
this.InitializeComponent();
var plotModel = new PlotModel { Title = "OxyPlot" };
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Bottom });
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Left, Maximum = 10, Minimum = 0 });
var series1 = new OxyPlot.Series.LineSeries
{
MarkerType = MarkerType.Circle,
MarkerSize = 5,
MarkerStroke = OxyColors.White
};
series1.Points.Add(new DataPoint(0, 6));
series1.Points.Add(new DataPoint(1, 2));
series1.Points.Add(new DataPoint(2, 4));
series1.Points.Add(new DataPoint(3, 2));
series1.Points.Add(new DataPoint(4, 7));
series1.Points.Add(new DataPoint(6, 6));
series1.Points.Add(new DataPoint(8, 8));
series1.Smooth = true;
plotModel.Series.Add(series1);
this.Content = new OxyPlot.Wpf.PlotView() { Model = plotModel };
}
注意这部分:series1.Smooth = true;
此答案已过时。
在撰写本文时,属性 InterpolationAlgorithm
用于设置样条类型。
var series = new LineSeries
{
InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline
};
我的应用程序要求创建样条图而不是线条图。我知道 WPF 不直接提供 splineseries。
如何自定义(模板)lineseries图表来显示曲线图,我不想使用任何第三方付费工具。
谢谢
如果你所说的样条系列是平滑线系列,你可以使用OxyPlot(当然是免费的)。使用 LineSeries
并将 Smooth
属性 设置为 true
:
这里有一个例子:
public MainWindow()
{
this.InitializeComponent();
var plotModel = new PlotModel { Title = "OxyPlot" };
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Bottom });
plotModel.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = OxyPlot.Axes.AxisPosition.Left, Maximum = 10, Minimum = 0 });
var series1 = new OxyPlot.Series.LineSeries
{
MarkerType = MarkerType.Circle,
MarkerSize = 5,
MarkerStroke = OxyColors.White
};
series1.Points.Add(new DataPoint(0, 6));
series1.Points.Add(new DataPoint(1, 2));
series1.Points.Add(new DataPoint(2, 4));
series1.Points.Add(new DataPoint(3, 2));
series1.Points.Add(new DataPoint(4, 7));
series1.Points.Add(new DataPoint(6, 6));
series1.Points.Add(new DataPoint(8, 8));
series1.Smooth = true;
plotModel.Series.Add(series1);
this.Content = new OxyPlot.Wpf.PlotView() { Model = plotModel };
}
注意这部分:series1.Smooth = true;
此答案已过时。
在撰写本文时,属性 InterpolationAlgorithm
用于设置样条类型。
var series = new LineSeries
{
InterpolationAlgorithm = InterpolationAlgorithms.CanonicalSpline
};