indowsForm平台下创建图表、Visual Studio 自带的Chart很有名气、但是在WPF平台下却不支持。

2016年左右,WPT Toolkit组件中提供了(WPF Toolkit Data Visualization Controls),但是现在似乎也已弃用。

在业务中,我需要从数据库或CSV文件中读取数据并创建图表,因此,当我搜索一些看起来是免费的、可用的图表时,我发现了以下四种。

这一次,我想使用一个简单的事例来表明每一个控件的差异。

目录

OxyPlot

LiveCharts

ScottPlot

MSChart

4四个图表库的设计比较

1.OxyPlot

2.LiveCharts

3.ScottPlot

4.Microsoft Chart

折线图示例比较

OxyPlot折线图示例源

LiveCharts折线图示例源

ScottPlot折线图示例源

Microsoft Chart折线图示例源

你推荐哪一个

总结


OxyPlot

公式サイト OxyPlot
文档 Welcome to OxyPlot’s documentation! — OxyPlot 2015.1 documentation
手册 https://readthedocs.org/projects/oxyplot/downloads/pdf/latest/
安装 Nuget下搜索 “oxyplot”、”OxyPlot.Wpf” 选择安装
相关文章 OxyPlotのグラフ描画に関する概要をもっと知りたい方はこちら
コピペで使えるソースコード(関数化したもの)が欲しい方はこちら

官方网站上的信息有点难以理解,许多地方的描述和图表示例不一致。

PDF 手册也已发布,但似乎在 2015 年的旧版本中被忽略。

但是,在“oxyplot”中搜索会命中大量信息,因此,如果您收集这些信息,您就会承受相当大的工作。

WPF,但已成为一个有意识的MVVM,它也可以用于编写C#代码,如Windows窗体。

下面是可以使用 OxyPlot 创建的图表的示例。

LiveCharts

官方网站 Live Charts
文档 Live Charts
安装 Nuget下搜索 “livecharts”、”LiveCharts.Wpf” 选择安装
相关文章 LiveCharsのグラフ描画に関する概要をもっと知りたい方はこちら
コピペで使えるソースコード(関数化したもの)が欲しい方はこちら

与 OxyPlot 相比,官方网站上的信息更丰富,可以绘制的图表类型也更丰富。

毕竟,它看起来很漂亮,动画绘制的点也引人注目,但很难说绘制速度太慢。

100 个左右没有问题,但每次在 10,000 个点绘制图形时,每次调整屏幕大小时,您都会等待。

由于您可以选择停止动画,因此绘图速度会提高,但仍会远远落后于其他图表库。

付费的高速版“实时字符齿轮”售价约为7000日元,这里可以毫无问题地绘制1000万点。

下面是可以使用实时图表绘制的图表示例。

ScottPlot

官方网站 ScottPlot
文档 ScottPlot 4.0.47 Cookbook
安装 Nuget下搜索 “scottplot”、”ScottPlot.Wpf” 选择安装
相关文章 ScottPlotのグラフ描画に関する概要をもっと知りたい方はこちら
コピペで使えるソースコード(関数化したもの)が欲しい方はこちら

绘制速度与Visual Stuido下的标准Chart一样。

与OxyPlot、 LiveCharts 相比较,ScottPlot更快。

与Visual Stuido标准Chart相比,图表类型更加丰富,且视觉表现上更加漂亮。

官方网站上的手册是实质性的,但是信息不会击中很多,使用者也很少。

即使出现问题,也只有依靠官方网站上的信息来自己解决它,我最喜欢这个。

MSChart

官方网站 Chart クラス (System.Windows.Forms.DataVisualization.Charting) | Microsoft Docs
安装 Visual Studio自带,不需要安装。
只需应用System.Windows.Forms.DataVisualization 以及 System.Windows.Forms 即可。
相关文章 MSChartのグラフ描画に関する概要をもっと知りたい方はこちら
コピペで使えるソースコード(関数化したもの)が欲しい方はこちら

Visual Studio 标准Windows Form 平台下使用的图标控件,WPF平台通过WindowsFormsHost 组件嵌入使用。

Microsoft官方网站有说明,但是并不容易看懂。

与其他图表库比较,这个更加难以理解。

但是,由于WindowsForm平台的信息比较丰富,这就补足了它的不全。

可以创建3D类型的图表,这是其他图表库中没有的功能。并且可以绘制的图标种类繁多。

虽然需要编写一些代码,单支持鼠标放大和缩小,以及像ScottPlot一样的快速绘制图表,设计时比其他图表库更令人着迷。

然而,你可以写一个相当不错的图表,如果你努力工作,所以也许蚂蚁会尝试这个。

四个图表库的设计比较

为了进行比较,我使用每个库绘制了四个图表。

由于散点图的点的初始值是圆形或方形的,隐私他们统一为圆形,除此之外,很少设置属性。隐私你可以看到初始值的设置。

1.OxyPlot

由于饼图的文本颜色为黑色,所以很难看,并且中间的数字可能看起来已消失。

增加图表的大小后,饼图中的所有数字都会显示出来。

我想使饼图字符为白色,但由于无法单独指定饼图中字符和标注字符的颜色,因此,如果将其设置为白色,则标注字符和线条将消失。 是指定饼图的颜色,将文本颜色设置为白色,放弃标注,还是找到可以同时显示两者的图表颜色和文本颜色。

2.LiveCharts

如果指定了任何内容,则绘制的点直径较大。

饼图看起来不错,因为他们是浅色配色方案,由白色分隔。

我担心的是最右边的条形图,其省略了字符。

我找不到显示他的方法,如果没有这样的选项,这是一个麻烦。

由于通过增加绘图区域来显示最后的内容,隐私最好以具有空间的大小进行绘制。

此外,标题不可见,因为找不到标题显示属性。

也许,他根本不存在吧。

3.ScottPlot

这里没有部分被看完,也没有被省略。

尺寸界面显示为薄,因此很容易看到。

4.Microsoft Chart

与ScottPlot一样,没有遗漏。

饼图中的字符与OxyPlot一样为黑色,因此我想将它改为白色。

此外,与ScottPlot相比,深色辅助线颜色太重。

折线图示例比较

我想查看每个库的折线图示例。

通过比较源码,你可以了解图表绘制的概念。

它使用折线图的示例源码来进行方法化,并将绘图数据传递给第一个参数,控件,第二个参数,标题,第三个和第四个参数。

OxyPlot折线图示例源

C#

1
2
3
4
5
6
7
8
9
10
11
12
private void DrawLine(OxyPlot.Wpf.PlotView chart, string title, double[] xs, double[] ys)
{
    PlotModel model = new PlotModel() { Title = title };
    model.Axes.Add(new OxyPlot.Axes.LinearAxis() { Position = AxisPosition.Bottom });
    model.Axes.Add(new OxyPlot.Axes.LinearAxis() { Position = AxisPosition.Left });
 
    LineSeries seri = new LineSeries();
    seri.Points.AddRange(Enumerable.Range(0, ys.Length).Select(i => new DataPoint(xs[i], ys[i])));
    model.Series.Add(seri);
 
    chart.Model = model;
}

对于名为PlotModel的类,你将注册纵轴、横轴以及曲线类、最后将PlotModel设置为控件的Model属性。

Axis、Series、数据类(折线图使用DataPoint)必须使用每种图表类型提供的数据类。

LiveCharts折线图示例源

C#

1
2
3
4
5
6
7
8
private void DrawLine(CartesianChart chart, string title, double[] xs, double[] ys)
{
    chart.Series.Clear();
    
    LineSeries seri = new LineSeries();
    seri.Values = new ChartValues<ObservablePoint>(Enumerable.Range(0, ys.Length).Select(i => new ObservablePoint(xs[i], ys[i])));
    chart.Series.Add(seri);
}

在为每种图表类型准备的Series类中,通过创建绘图数据并最后在控件的Series属性中添加图表来显示图表。

这里可以省略Axis类。但是Series和绘图数据必须存储在根据图表类型确定的类中。

ScottPlot折线图示例源

C#

1
2
3
4
5
6
7
8
private void DrawLine(WpfPlot chart, string title, double[] xs,double[] ys)
{
    chart.plt.Clear();
    chart.plt.Title(title);
    chart.plt.PlotSignalXY(xs,ys);
    chart.Render();
 
}

通过在控件的plt属性中注册标题和绘图数据,最后调用控件的Render方法来显示图表。

与其他库相比,它非常简单。

创建绘图数据的方法必须使用每种图表类型提供的方法。

Microsoft Chart折线图示例源

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
private void DrawLine(Chart chart, string title, double[] xs, double[] ys)
{
    chart.Titles.Clear();
    chart.ChartAreas.Clear();
    chart.Series.Clear();
 
    chart.ChartAreas.Add(new ChartArea());
    Series seri = new Series() { ChartType = SeriesChartType.Line };
    Enumerable.Range(0, ys.Length).Select(i => seri.Points.AddXY(xs[i], ys[i])).ToArray();
 
    chart.Titles.Add(title);
    chart.Series.Add(seri);
}

这需要将ChartArea类的实例添加到ChartAreas属性里,以便图表绘制。

与其他库不同,只有一个Series类可以保存绘图数据。

相反,在生成Series类的实例时,将图表类型设置为ChartType。

之后,在系列类中注册绘图数据与其他库相同。。

但是,尽管其他库存储没中图表类型的绘图数据的类不同,但对于Microsoft Chart图表,无论图表类型如何,AddXY方法足可。

这是因为AddXY方法的第一个参数是Object类型,可以接受实数和字符串,但内部似乎根据ChartType进行了适当的转换。

你推荐哪一个

我根据以前的调查制作了比较表如下。

库名称 安装 好看 速度 手册等 专有技术文章
OxyPlot 必要
LiveCharts 必要 ×
ScottPlot 必要 ×
Microsoft Chart 不要 ×

如果以绘制大量数据的速度为准,则Microsoft Chart、ScattPlot最好。

如果为了绘图方便,则ScattPlot是最佳选择。

如果你想专注于设计或制作动画,LiveCharts是个不错的选择。

如果你想实现一个类似EXCEL的3D图表的东西,那就只能用Microsoft Chart。

OxyPlot是ScottPlot和LiveCharts的中间存在么・・・

总结

作为WPF中使用的免费图表库,我们比较了四种类型的图表: OxyPlot、LiveCharts、ScottPlot、Microsoft Chart。我使用我自己的印象、实际绘制结果与源代码进行比较。

哪一个更好取决与您的用途,因此请参阅本文以查找适合您的用途的图表库。

原文如下

OxyPlot,LiveChart,ScottPlot,MsChart 比较

【WPF】 免费图表控件的比较 (OxyPlot,LiveChart,ScottPlot,MsChart)相关推荐

  1. WPF 曲线图表控件(自制)(二)

    原文:WPF 曲线图表控件(自制)(二) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/775218 ...

  2. 可用于wpf的图表控件:WPFTookit Chart

    当前项目需要一个图表控件,尝试用过mschart和livechart,都不是很满意.这里试一下WPFToolkit.DataVisualization. 引用dll,通过nuget包管理器下载WPFT ...

  3. WPF 曲线图表控件(自制)(一)

    由于公司需要所以自写了一个简单的曲线图表控件,在此分享.先上一张效果图 1.界面xaml X轴和Y轴用 2个line对象写死在xaml上 外部用一个Grid包裹起来,然后X轴的宽度,和Y轴的高度就是绑 ...

  4. WPF Visifire图表控件使用基础

    https://www.cnblogs.com/wyuan/archive/2012/07/22/WPF.html 引言: 由于项目中需要使用Visifire所以自己就写了一些demo,大家一起共享! ...

  5. java 免费图表控件_推荐10款免费而优秀的图表插件

    开发人员很多时候需要使用图表来表现一些数据,而一张图表往往能够比几行密密麻麻的数字表格更能直观地展示数据内容.随着Web技术的发展,从传统只能依靠于flash.IE的vml,各个浏览器尚不统一的svg ...

  6. java 免费图表控件_给你一杯java润润喉 10款免费的图表JS插件

    开发人员很多时候需要使用图表来表现一些数据,而一张图表往往能够比几行密密麻麻的数字表格更能直观地展示数据内容.随着Web技术的发展,从传统只能依 靠于flash.IE的vml,各个浏览器尚不统一的sv ...

  7. java 免费图表控件_8个华丽且实用的java图表应用

    今天推荐8款实用的Java图表应用,大部分图表应用的功能都类似,主要在于界面的美观性和使用的灵活性上有一点高低. 1.JFreeChart- 多功能Java图表类库 JFreeChart是一款基于Ja ...

  8. java 免费图表控件_推荐10款功能强大且免费的JavaScript图形图表插件

    1.D3 D3是最流行的可视化库之一,它可以将任意数据绑定到DOM(Document Object Model,文档对象模型),然后对该文件提供数据驱动转换. 2.Rickshaw Rickshaw ...

  9. 漂亮好用的ASP.NET图表控件 免费的

    绝对免费,绝对好用,中文支持绝对好,轻松生成漂亮的2D和3D图表. 这个控件是我找到的免费图表控件中非常好的一个,我一直在关注这个控件,虽然功能未必比得上商业的图表控件强大,但是绝对好用,绝对免费,他 ...

  10. OxyPlot.Wpf 图表控件使用备忘

    OxyPlot.Wpf 图表控件使用备忘 目录 OxyPlot.Wpf 图表控件使用备忘 一.OxyPlot.Wpf 控件信息 二.基本概念 (一) PlotView 和 Plot (二) PlotM ...

最新文章

  1. 游戏开发基础:A*算法(转)
  2. php的$_SERVER['HOSTNAME']
  3. python常用命令汇总-python数据分析之pandas常用命令整理
  4. python内置函数open_Python的内置函数open()的注意事项
  5. 【CMS】安装CMS
  6. Navicat 提示 Access violation at address ***(771B7870) in module ‘ntdll.dll’. Read of address ***(220A
  7. 通过Nginx配置多域名访问
  8. 平衡二叉查找树插入节点操作( AVLTree ):旋转、调整平衡
  9. 正态分布的前世今生(1)
  10. Wamp环境下集成【禅道】管理软件
  11. srand和rand函数_了解C ++ rand()和srand()函数
  12. 服务器怎么修改sqlroot密码,mysql设置更改root密码、mysql服务器的连接、mysql常用命令的图解...
  13. deepstream-app源码没有公开,预计3.0可能公开
  14. 高光谱图像处理和分析软件(包含雷尼绍Renishaw wdf 文件导入解析功能)
  15. IPTV在线服务器地址,德芯IPTV网关服务器,德芯直播点播服务器
  16. c语言ide 字体大小,配置最小c语言IDE
  17. Java Web 后端技术
  18. 网络验证系统BSPHP二次开发 自定义加密解密开发
  19. 微信的服务器数量限制,微信时刻视频最多可以发几个 发布数量限制多少
  20. 别做被大公司毁掉的年轻人

热门文章

  1. python编程语言在线编译手机_groovy在线运行,groovy在线编译,支持手机在线编程写代码 - Groovy教程...
  2. IDEA汉化包插件无法下载解决办法
  3. max点缓存烘焙帧_3DMAX怎么进行点缓存?
  4. Linux安装软件的三种方式
  5. vi设计清单_最终产品设计组合清单
  6. java 语音库_语音控制pc
  7. 计算机网络技术蘑菇钉周记,2021年蘑菇钉第一周周记范文开学第一周周记精选范文.docx...
  8. 主成分分析PCA和经验正交函数分析EOF的原理(通俗易懂的解释)
  9. 经典CNN图像分类网络汇总
  10. 基于ATmega128单片机的LCD12864显示密码锁