Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am working on a project for my company, and I need to integrate some graphs of different types and average complexity to C# in the process of studying stock markets. I found this free library on the Internet, ZedGraph. If you came across it, do you recommend using it? And how well is it supported?
I can recommend ZedGraph. I have been using it with great
success for several years in MSQuant, for most plots: mass
spectrum display, recalibration error plots, LC peak plots,
quantitation profiles and others.
Here are some screen-shots from MSQuant where ZedGraph has
been used:
Scatter plot, with trendline
X-Y plot with the actual data points shown, line connection data points
Sticks plot, with overlayed annotation (TextBoxes, in fact)
Several plots in the same window, types as in 2. and 3. (the two plots in the bottom half)
Closer look at type 2.
Collage, type 2. and code in Visual Studio
The source code that is behind the first plot can be found in Source code for MSQuant: frmRecalibrationVisualisation.vb, MSQuant/msquant/src/GUI/forms/frmRecalibrationVisualisation.vb..
In contrast to many other charting libraries, ZedGraph can
also be used for scientific/math oriented plots/charts (for example,
scatter plots) and not only for business-type plots/charts.
Stock market applications may also need scatter plots.
In ZedGraph, there is built-in support for the user to zoom
in (infinite) and zoom out, pan (drag while holding down the
Ctrl key), save the plot to a file or copy it to the
clipboard.
There is one thing I am missing in ZedGraph: the ability for
the user to select items in the plot in order to perform
some action on those selected items (for example, computing some
number, accepting them as verified or marking them as
outliers to the application program).
Don't be put off by the state of ZedGraph's development.
ZedGraph is mature, is of very high quality, and can be used
as-is. There is supposed to be a new team behind its further
development.
ZedGraph does not appear to be supported by the original developers anymore. However, you can find it as part of other projects where updates have been made.
For example, per this discussion on a ZedGraph project discussion list:
So I highly optimized ZedGraph for all
the curves, and objects. Basically, I
optimized how it uses GDI and
specifically made it only draw objects
that will fit in the chart.
So it scrolls and zooms now extremely
efficiently even if I have many
millions of objects on the chart. Plus
it users nearly zero CPU when it's
running in real-time as slower speeds
for tracking financial charts.
I fixed a few defects also.
You can find a fork of the repo with the changes here.
I strongly recommend the Microsoft Chart Controls For .NET Framework 3.5 over ZedGraph.
Do you mean Zedgraph rather than Zgraph? Zedgraph's homepage is here and is described in a CodeProject article here.
If you are talking about Zedgraph I can recommend it, I have relatively little experience in C# but quite a lot in data visualization. I found it straightforward to get Zedgraph up and running and producing good-looking charts. Zedgraph is very good for 2D charting, I'm still looking for an equivalent for 3D plotting.
I hate to be a killjoy, but I wouldn't recommend ZedGraph.
I was working with it a couple of years ago and noticed that the support was provided by a single enthusiast that seemed abused by everyone wanting his freeware with no compensation or contributions. It's a curse faced by a lot of FOSS authors.
It doesn't look like the software has been updated in over a year now and the help forum is full of queries with no responses. It looks like the author lost interest and walked.
If you use ZedGraph, do it because you want to maintain the underlying code and because you want to contribute back to the user/developer community. If you have no interest in contributing, and you can't maintain it for yourself, be prepared for things that don't work and simply never will. An enterprising company could sponsor the development of the software and offer for-fee support, but you need to decide for yourself if it's good enough to do that and if there is a real revenue model.
Although development seems to have stalled, WPF Dynamic Data Display looked promising.
ZedGraph does not support 3D graphing, such as Surface Chart: Implied Vol Surface
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 months ago.
Improve this question
Which is the best 3rd party library to use for exporting data and generating charts in the Excel from Asp.net. I have researched on .Net and found the following:
1. EPPlus: Since we are to work in a very tight schedule and the project is also not too long, so we will not be having much time to resolve issues if we get stuck somewhere after using the component. Since that is an open source library, so the time guarantee to get a help to get the issue resolved cannot be there.
2. Spreadsheetgear2012: This seems to be a good library and its site seems to show a good amount of charting examples.
3. Aspose.Cells: This also seems to be a good library and its site seems to show good charting examples although its a bit pricey, but their support seems really good and they seem very open to new ideas from clients to implement in their product and release a new version.
We are not able to take a final call whether to go for Spreadsheetgear2012 for .Net or Aspose.Cells. Any details and ideas will be highly appreciated.
The comparisons that I was able to find on internet for these products were pretty old (around 4 years back).
Our main application is online interaction and reporting from a spreadhseet, rather than generation and downloading of other spreadsheet files. We tried quite a few spreadsheet deployment options and in the end went with Spreadsheetgear. We found it to be very simple to set up, fast and flexible for this purpose. Their online examples and support are also very good.
We have moved on from their examples and have been able to set up their API with an MVC3 ASP.NET framework. It is quite a task to get it working but in the end MVC makes for a very neat code structure and much faster deployment of applications. The combination is highly recommended.
What is the most important to you? Cost, long term plan or support?
The first one is free so if cost is your biggest constraint, you really don't have options.
The second one is cheaper than your last one but it seems to have a smaller user community.
So if you run into trouble, where do you find help?
The third one provides a full series of other related products too. If you think you may need other products later, then you can bundle your existing license and that can save you money.
I am using the third one at work and think it's a good product. They have large user community and their support is responsive. But it does come with a hearty cost.
You are missing another player in this space that, while not as spiffy or as speedy to plug-and-play as the paid options, could perhaps be enough to get you where you need to go with your spreadsheets: NPOI. Even if you don't use it for your current project, it still could be worth looking into as a tool to use at a later point.
CodePlex
http://npoi.codeplex.com/
Scott Mitchell on NPOI
http://scottonwriting.net/sowblog/archive/2011/06/08/export-an-ado-net-datatable-to-excel-using-npoi.aspx
Leniel Macaferi on NPOI
http://www.leniel.net/2009/10/npoi-with-excel-table-and-dynamic-chart.html#sthash.VZ4NjvZK.dpbs
Zach Hunter on NPOI
http://www.zachhunter.com/2010/06/improved-npoi-exportdatatabletoexcel-function/
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
Back in the day it was easy; You made your own 3D stuff, then came DirectX, then came OpenGL. For .Net developers MDX was nice. Then XNA took over for MDX, but it its not the same. XNA seems to be very game-centric with all the content pipelining and preloading of fixed models and stuff.
So where do we stand now? After a couple of days of reasearch/trial&error I feel everywhere I look I find half developed libraries, libraries with overhead, severe limitations or libraries that are overly complex.
I want to do "free-hand" 3D stuff. For instance displaying 200k dots on a screen in 3D and move them around at 30fps (Kinect depth image). I want to make 3D screensavers, audio analysis plugins, etc. All of which is not prefabs for a content pipeline, and which require high performance. And (ehm) I want to do it from .Net.
Anyone have experience with libraries that are easy/understandable and still gives some fair amount of freedom and speed?
I seem to have landed on OpenTK. I think it gives more or less direct access to the OpenGL API and doesn't require loads of dependencies.
It is comparatively easy to understand. It requires few (and understandable) lines of code to get started. It doesn't hold the objects for me so I'm free to change anything for each pass, which is great because I'm mainly working with unsafe pointers to memory.
It is of course difficult to combine speed with ease of use. Speed requires talking directly to the 3D API while ease of use requres abstraction. Therefore this must be considered a lower level API than some of the others I've tried. If I wanted to do some prefab character animation then XNA would probably be a better choice, but for my use (described above) this seems very promising so far (4-5 hours of hacking).
Some sample code:
private void Render()
{
// Every frame
GL.MatrixMode(MatrixMode.Modelview);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.LoadMatrix(ref cameraMatrix);
GL.Begin(BeginMode.Points);
// Here I can add lots of points. I add 200k without any big problem.
// It seems these points could have been passed in as an array pointer too,
// but I'll look at that later.
GL.Vertex3(x2, y2, z2);
GL.End();
glControl.SwapBuffers();
}
If you liked MDX, SlimDX should be right up your alley. It's basically a replacement for MDX, but with a lot of the questionable design decisions fixed up, and a lot more functionality included. Anything you had with MDX, you will find present in SlimDX in one form or another.
Alternatively there is another C# wrapper package for OpenGL: OpenGL DotNet. Works great for me! Check it out at http://www.taylaninan.com/opengl-dotnet.php .
It wraps OpenGL up to version 4.4 and supports over 550+ OpenGL Extensions. It also supports GLU, GLUT, FreeGLUT, DevIL (Developer's Image Library), ILU and ILUT for DevIL.
It a low level API for the above libraries.
We faced a similar issue some time ago and the following represents our opinion only of course. One of our main concerns was that the library should be versatile, produce 3D images of very good quality, free, and not put loads of extra constraints on the installer, i.e. like with XNA where you have to have the correct files installed. This seemed like a possible source of headache. In the end we settled for DirectX and wrote the GUI in C#. All needed interaction with the 3D was done with wndproc. This provided us with both the power of DirectX and the ease of GUI development with C#. We haven't regretted this at all.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am looking for Graph libraries for .net. Are there any out?
ps: I mean GRAPH libraries, not graphics nor charting libraries!
edit: What I mean is graphs, from graph theory:
(source: sourceforge.net)
I also need it to have drawing capabilities.
Use a combination of QuickGraph (GitHub, CodePlex) and Graph# for WPF (GitHub fork, CodePlex) - both top notch libraries. They work really well for me but the documentation for Graph# is almost non-existant.
I am working in the NDepend team and we switched from GraphViz to MsAgl (Microsoft Automatic Graph Layout) in september 2008. The MsAgl license allows commercial utilisation. Here are a few sample pictures of MsAgl graphs integrated in NDepend (everything is interactive, nodes are movable/selectable/removable/clickable, edges are editable/selectable/removable/clickable, the layout is zoomable, and also, while it could be cleaner the MsAgl API is clean enough to work with):
Though my previous post get deleted I'll try to give more complex answer on the question.
The topmost answer is not quite actual anymore as the Graph# library is strongly outdated.
I'll recommend to check the combination of GraphX and Quickgraph. GraphX as the rendering engine and Quickgraph as the graph management and math operation component.
GraphX library is coded for WPF 4.0 and METRO. It provides many features that Graph# lacks:
Improved rendering performance for large graphs
Edge routing and bundling support, many other edge options
Enhanced zoom control which supports Overview window and multiple vertices selection
Rich documentation and samples
Also GraphX supports all the original layout algorithms from Graph#.
There is QuickGraph, it works pretty well and has most of the basic algorithms.
Take a look at yWorks:
http://www.yworks.com/en/index.html
There aren't a massive amount of good libraries out there, from what I've seen.
You can use the NodeXL API from Microsoft Research at: http://www.codeplex.com/NodeXL but a similar question has been asked at: https://stackoverflow.com/questions/44090/do-you-know-any-graph-visualization-libraries-for-net/
Take a look at Satsuma. Written in C#, mainly graph algorithms, but there is some basic graph layout and drawing as well.
I haven't tried it yet but ran across an interesting offering from MS Research for visualizing directed graphs Microsoft Automatic Graph Layout.
Try using "directed graph" or "digraph" for search terms. I get a lot of hits.
Check out
http://quickgraph.codeplex.com/
They have support for visualization via DotViz and Glee.
For visualization, i'd also check out
http://flare.prefuse.org/
Though its flash, it seems very interesting, and they have at least tree visualization, though you may be able to coax some non-directed graphs out of it.
The C5 Generic Collection Library
for C# and CLI
Buddy I think this is what you need!
This article presents a Generic Graph
Library, 100% C#. This library is an
attempt to port the Boost Graph
Library (BGL) from C++ to C#.
We've used ZedGraph which is an Open Source project written in C#, so you can tweak it if you feel it is necessary. It served our needs which sound like they're very close to what you described. There's even a wiki site for the project with some pretty good samples.
Matlab has good support for graphing, and with a few lines of .NET you can call a .m file to display graphs. See Creating a graph or a plot from a C# console app, using Matlab?
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Can anyone recommend a free grid/graphing component for C#/.NET? I'm having a look at NPlot right now, but so far I'm finding it quite troublesome.
EDIT: I particularly need something that plugs into Windows Forms - I'm not doing ASP.NET, and don't really fancy reproducing my graph using Google's API every time I get a new data point (several times a second).
Thanks :-)
MS just released one if you are using 3.5 or you could use ZedGraph
EDIT: The Link is Just a ASP.NET demo they have a Windows Forms Release as well with DEMOS
Microsofts Chart Control
MS Chart Controls (VS tools) work with winforms too:
Microsoft Chart Controls for Microsoft
.NET Framework 3.5 will install new
assemblies that contain the ASP.NET
and Windows Forms Chart Controls.
I haven't had time to use it yet, so I don't know whether it supports charting/plotting (rather than data-graphing).
I can highly recommend ZedGraph (http://zedgraph.org/wiki/index.php?title=Main_Page). It was very easy to configure from my experience (and well documented), not to mention that it seems really quite versatile.
Zedgraph seems to be a good tool to plot 2d lines anc histograms. Is there a c# library which allow to visualize 2D data (f[x,y]) as the matlab function pcolor or imagesc ?
Take a look at Dynamic Data Display on CodePlex. It's a pretty rich library for WPF with good documentation and good sample code.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
C# seems to show some promise for scientific computing, but I found very little about one plotting 2D graphs, which is very important both for science student and scientists.
Is there a reliable, free, way to create publication quality 2D plot with C# ? And the capacity to save to several formats (png, eps, ...). Something similar to Python's matplotlib ?
There is OxyPlot which I recommend. It has packages for WPF, Metro, Silverlight, Windows Forms, Avalonia UI, XWT. Besides graphics it can export to SVG, PDF, Open XML, etc. And it even supports Mono and Xamarin for Android and iOS. It is actively developed too.
There is also a new (at least for me) open source .NET plotting library called Live-Charts. The plots are pretty interactive. Library suports WPF, WinForms and UWP. Xamarin is planned. The design is made towards MV* patterns.
But #Paweł Audionysos suggests not such a good performance of Live-Charts WPF.
ZedGraph is a good choice.
See Samples Environment for Microsoft Chart Controls:
The samples environment for Microsoft Chart Controls for .NET Framework contains over 200 samples for both ASP.NET and Windows Forms. The samples cover every major feature in Chart Controls for .NET Framework. They enable you to see the Chart controls in action as well as use the code as templates for your own web and windows applications.
Seems to be more business oriented, but may be of some value to science students and scientists.
gnuplot is an actively maintained program widely used in the scientific community. Normally plots are generated from data files which you can write out in your C# program, but it is also possible to call the gnuplot executable from C# and display the generated image in a C# picture box.
I started using the new ASP.NET Chart control a few days ago, and it's absolutely amazing in its capabilities.
Here is the link.
EDIT: This is obviously only if you are using ASP.NET. Not sure about WinForms.
I just wanted to supplement MajesticRa's recommendation of OxyPlot, and point out how OxyPlot can be used for a variety of plotting cases. The software is free and Open-Source, very polished, and allows for a variety of uses beyon normal 2D mapping.
I've been using OxyPlot for an unorthodox project, where I display (in WPF/C#) a map (Robotic Occupancy Grid) which I could overlay with LineSeries (Path Traveled) and PointSeries (Way Points). Using the OxyPlot ImageAnnotation feature I am able to display 60Hz Video within my OxyPlot, by periodically updating the ImageAnnotation on its own thread, while mapping Series of points overtop the video. The background video and points are even scalable and translatable.
Hopefully this is helpful for other looking to display plots overtop of images and videos.
NPlot is a pretty good simple open source 2D plotting API. Unfortunately, the web site is down. I don't know if this is just temporary or not. I haven't heard of any bad news. It may come back up.
http://www.nplot.com
Here is an article describing it:
https://web.archive.org/web/20210612110405/https://aspnet.4guysfromrolla.com/articles/072507-1.aspx
The previous article uses VB.NET, but obviously this will work with C#.
Again, not sure why nplot's site is not currently working but it is a somewhat popular plotting API that I've used in the past. I post it for your information and in case of the likely event nplot will be back up soon. :)
Edit:
Thanks to a Hosam Aly, it looks like the SourceForge project can still be accessed here:
http://sourceforge.net/projects/nplot