用C#绘制

C#似乎显示出对科学计算的一些承诺,但是我发现对于绘制二维图的绘图很less,这对于理科学生和科学家来说都是非常重要的。

有没有一种可靠的,免费的方式来创build出版质量二维情节与C#? 并能够保存为几种格式(PNG,EPS,…)。 一些类似于Python的matplotlib?

有我推荐的Oxyplot ,还有Live-Charts (参见update2)。

Oxyplot有WPF,Metro,Silverlight,Windows Forms,Avalonia UI,XWT等软件包。 除了graphics,它可以输出到Svg,Pdf,OpenXml等,它甚至支持Android和IOS的Mono和Xamarin。 它也积极发展。

*更新*移动到GitHub https://github.com/oxyplot/oxyplot

*更新2 *还有一个新的(至less对我来说)开源.Net绘图库称为Live-Charts(github链接)

情节是相当互动的。 图书馆支持WPF,WinForms和UWP。 Xamarin正在计划中。 devise是针对MV *模式的。

ZedGraph是一个不错的select。

请参阅Microsoft图表控件的示例环境 :

用于.NET Framework的Microsoft图表控件的示例环境包含ASP.NET和Windows窗体的超过200个示例。 这些示例涵盖了.NET Framework图表控件中的每个主要function。 它们使您能够看到图表控件的作用,以及将代码用作您自己的Web和Windows应用程序的模板。

似乎是更多的商业导向,但可能对科学学生和科学家有一定的价值。

gnuplot是一个在科学界广泛使用的积极维护的程序。 通常情况下,您可以从您的C#程序中写出的数据文件生成绘图,但也可以从C#调用gnuplot可执行文件,并将生成的图像显示在C#图片框中。

我几天前开始使用新的ASP.NET图表控件,而且它的function非常棒。

链接在这里。

编辑:这显然只有当你使用ASP.NET。 不知道WinForms。

我只想补充MajesticRa对OxyPlot的推荐,并指出OxyPlot如何用于各种绘图案例。 该软件是免费的,开放源代码,非常精美,并允许beyon正常2D映射的各种用途。

我一直在使用OxyPlot作为一个非正统的项目,在WPF / C#中显示一个地图(机器人占用网格),我可以覆盖LineSeries(path行驶)和PointSeries(路点)。 使用OxyPlot ImageAnnotationfunction,我可以在OxyPlot中显示60Hz的video,通过在自己的线程上定期更新ImageAnnotation,同时在video上映射一系列点。 背景video和点甚至可以扩展和翻译。

希望这有助于其他寻找显示图像和video的情节。

NPlot是一个相当不错的简单的开源2D绘图API。 不幸的是,该网站已closures。 我不知道这只是暂时的。 我没有听到任何坏消息。 它可能会回来。

http://www.nplot.com

这是一篇描述它的文章:

http://aspnet.4guysfromrolla.com/articles/072507-1.aspx

以前的文章使用VB.NET,但显然这将与C#工作。

再次,不知道为什么nplot的网站目前没有工作,但它是一个有点stream行的绘图API,我曾经使用过。 我张贴它的信息,并在可能的事件情况下,nplot很快将备份。 🙂

编辑:

感谢Hosam Aly,看起来SourceForge项目仍然可以在这里访问:

http://sourceforge.net/projects/nplot

FWIW,你可能想在F#而不是C#中进行技术计算,因为F#是专门为此目的而devise的。 然而,我开发了自己的商业阴谋库,因为我对.NET上免费提供的任何东西都不满意。