有关livechats增强类以及免费图表控件

各位大拿,我最经使用了wpf中的livecharts控件,但免费的livecharts在加载一万个点就会十分卡顿,找了很久也没看到wpf中有啥免费的其他图表控件,性能比较好的,因为我的需求可能是要在图表控件中加载接近十万个点的折线图,我看了livecharts增强类性能很好,但好像是付费的,进了官网一直卡顿,不知道他付费是一次付清还是按年收费,请问各位大拿推荐有啥免费的图表控件性能比较好的,或者livecharts的这个增强类要怎样购买,谢谢大家了

如果你需要在WPF中加载大量数据并且性能要求高,我推荐你使用SciChart控件。SciChart是一款功能强大、灵活且性能优异的WPF图表控件,支持大量数据可视化和实时图表。

SciChart有一个免费的基础版本,可以支持数据点数量达到10000个,如果需要支持更多的数据点,你可以购买SciChart的Pro或Enterprise版本,价格会相应更高,但是性能也更好。

如果你不想使用SciChart,还有其他一些WPF图表控件可以选择,例如OxyPlot、Syncfusion、Visifire等,但是它们的性能可能不如SciChart。

总的来说,如果你需要在WPF中加载大量数据并且性能要求高,SciChart是一个值得考虑的选择。

该回答引用ChatGPT
对于需要在图表控件中加载接近十万个点的折线图,免费的图表控件可能无法满足性能要求。因此,建议考虑购买livecharts的增强类。
根据livecharts官网的介绍,增强类是按年收费的,价格根据使用人数和授权类型而定。购买方式可以通过官网上的联系方式进行咨询和购买。
如果仍然希望使用免费的图表控件,可以考虑以下几个选项:
1. OxyPlot:OxyPlot是一个开源的.NET图表控件,支持多种图表类型,包括折线图、柱状图、饼图等。它的性能比较好,可以处理大量数据。具体使用方法可以参考官方文档:https://oxyplot.readthedocs.io/en/latest/
2. Visiblox:Visiblox是一个免费的WPF和Silverlight图表控件,支持多种图表类型,包括折线图、柱状图、饼图等。它的性能也比较好,可以处理大量数据。具体使用方法可以参考官方文档:https://www.visiblox.com/
3. SciChart:SciChart是一个商业的WPF和Silverlight图表控件,但它也提供了一个免费的版本,可以处理最多10000个数据点。如果需要处理更多的数据点,需要购买商业版。具体使用方法可以参考官方文档:https://www.scichart.com/
下面是使用OxyPlot绘制折线图的示例代码:
首先需要在项目中安装OxyPlot和OxyPlot.Wpf两个NuGet包。
在XAML中添加OxyPlot控件:





在ViewModel中定义数据源:

public class MainViewModel : INotifyPropertyChanged
{
private List _dataPoints;
public List DataPoints
{
get { return _dataPoints; }
set
{
_dataPoints = value;
OnPropertyChanged(nameof(DataPoints));
}
}
public MainViewModel()
{
// 生成一万个数据点
var random = new Random();
var dataPoints = new List();
for (int i = 0; i < 10000; i++)
{
dataPoints.Add(new DataPoint(i, random.NextDouble()));
}
DataPoints = dataPoints;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

在MainWindow中设置DataContext:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
}

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
对于需要在图表控件中加载接近十万个点的折线图,性能确实是一个很大的问题。除了livecharts之外,我介绍几个其他的免费图表控件,供您参考。

  1. OxyPlot(https://oxyplot.github.io/

OxyPlot 是一个跨平台的开源图表控件,支持 WPF, Windows Forms, Xamarin.Forms, GTK#, WPF 和 Unity 编辑器。OxyPlot 支持多种图表类型,包括折线图、柱状图、饼图等。此外,OxyPlot 还提供了多种渲染器,包括 Bitmap 渲染器、SVG 渲染器等。

OxyPlot 在性能方面表现很出色,可以处理数百万个数据点。如果您需要更高的性能和更多的功能,可以考虑使用 OxyPlot 的商业版 - OxyPlot Pro。

以下是 OxyPlot 中加载折线图的示例代码:

// 新建一个 OxyPlot PlotModel 对象
var plotModel = new PlotModel();

// 新建一个 OxyPlot LineSeries 对象
var lineSeries = new LineSeries();

// 添加数据点
for (int i = 0; i < 100000; i++)
{
    lineSeries.Points.Add(new DataPoint(i, Math.Sin(i / 10.0)));
}

// 将 LineSeries 添加到 PlotModel 中
plotModel.Series.Add(lineSeries);

// 将 PlotModel 绑定到 WPF 中的 Plot 控件上
myPlot.Model = plotModel;
  1. ScottPlot(https://github.com/ScottPlot/ScottPlot

ScottPlot 是一个用于 .NET 和 Python 的免费、开源的、基于标签的绘图控件。ScottPlot 支持众多图表类型,包括折线图、散点图、柱状图、热图等。

ScottPlot 对于数百万个数据点的表现也很出色,同时还提供了交互式功能和简单的网格线、轴线配置选项。

以下是 ScottPlot 中加载折线图的示例代码:

// 新建一个 ScottPlot Plot 对象
var plt = new ScottPlot.Plot(600, 400);

// 添加折线图
var xs = Enumerable.Range(0, 100000).ToArray();
var ys = Enumerable.Range(0, 100000).Select(i => Math.Sin(i / 10.0)).ToArray();
plt.AddSignal(xs, ys);

// 显示图表
plt.SaveFig("output.png");

LiveCharts 的增强类(LiveCharts.EasingFunctions 和 LiveCharts.Wpf.Charts)是一个 LiveCharts 的扩展库,用于增强 LiveCharts 的功能和性能。如果您需要使用此扩展库,可以在 NuGet 上搜索 LiveCharts.EasingFunctions 或 LiveCharts.Wpf.Charts 直接安装。LiveCharts 的扩展库按照功能模块分类,采用模块化结构,您可以根据自己的需求选择需要的功能模块,每个模块一次性购买后永久拥有,不需要按年收费。以下是使用 LiveCharts 增强类的示例代码:

// 新建一个 LiveCharts Chart 对象
var chart = new LiveCharts.Wpf.CartesianChart
{
    Width = 600,
    Height = 400,
    LegendLocation = LiveCharts.LegendLocation.Bottom,
};

// 添加一个折线图
var lineSeries = new LiveCharts.Wpf.LineSeries
{
    Title = "My Line Series"已黑化的小白 };
for (int i = 0; i < 100000; i++)
{
    lineSeries.Values.Add(Math.Sin(i / 10.0));
}
chart.Series.Add(lineSeries);

// 显示图表
this.Content = chart;

如果我的回答解决了您的

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^