I am creating a UI rich application in C# forms (.net 4.5) for managing/displaying family tree. I tried using many already available products. But none of the free products available have the feature to display and print the complete family tree in a screen. So I have decided to write one myself.
Now I have decided to use graph for the UI and a node will be created depicting each person in the database. I am planning to parse through the complete database in the step 1 and create a logical graph. Step 2 is to display the logical graph with a rich UI. I am planning to have simple features like, when we right click on the appropriate node, we must get the option to update their information.
So my question now is, to cater the above requirement; what is the best component could be used.
Thanks in advance,
S.Sudharsan
Graph# is an open-source C# component for displaying graphs. It requires a little bit of work because it hasn't been maintained in a long time but still very useful.
I had the same problem some time ago.
The final solution was to design each graph node as a user control (so you can customize all the visual properties) and use GraphViz (in my case DOT algorithm) to calculate node positioning.
If you don't want to use any third party framework, you should do some research about graph layout (especially the Sugiyama algorithm).
Related
I'm developing Surface application, but I came across a problem. I need to develop a control with next abilities:
World map on background (should display only continents).
I need a way to find out on which continent user touched(interactive background map).
Any controls can be added on the top of the map control (for an example video-player control for different regions of the map).
Map control should works in offline mode only (without any
connection to internet).
I can't find any frameworks that would meet my goals.
So, anyone know something projects/code samples that can help me to achieve my goals
Offline mapping could be done in many ways, one of them would be download / get shapefile for continents. (You can search for that). Later you can use SharpMap to display that shapefile in WPF application. SharpMap is a .Net framework based open source application which enables reading multiple geospatial formats.
Another option to read geo-spatial data is DotSpatial.
I am looking for a diagram\ graph\ flowchart user control for web application preferably ASP.NET.
My wish would be to pass a Graph object that contains a collection of nodes and edges and the capabilities that i would look for are:
Add a new node.
Connect two nodes together with an edge.
Delete nodes and edges
Automatic layout algorithm to minimize crossing of layers and edges
I found parts of the solution that will help me to create such a component such as:
JSPlumb or Raphael to draw the graph on the clients.
GLEE\ MSAGL to automatically order the graph in visual terms.
All of these will allow me to construct a component but i was wondering if anyone have already seen something that is web based and could do the task?
hopefully its open source :)
Have you considered Dracula Graph Library? It looks like it would handle part 4 very well. You would only have to wire up some edit controls for the user.
From this SO question apart from Raphael there is jointjs.com worth checking out
Can someone recommend a library or code to visualize bipartite graphs in C#?
Graph# seems not to support this kind of graph directly (but has
some support to disentangle vertices).
I want to create some graphic like this bipartite graph with some text in the nodes. Nodes being same width and height would be ideal.
A WPF control would be perfect, as it exists for graph#.
Perhaps even a XAML definition exists?
As an alternativ: a report window can also be very good.
Probably someone with more experience in Graph# can provide hints on how to do this
utilizing Graph#.
Tried around a bit with NodeXL but that seems not to be the perfect solution,
as the nodes seems not be that much modifiable. Perhaps someone can provide
a better solution. Have played with the NetworkView provided by Soroush.
At the moment this comes closest to what I want.
-update-
Tried out NetworkView shared by Soroush Falahati. This seems to be a good base,
but is not yet that flexible as I need it. I have problems to believe that there
is no library out there that can do those things out of the box.
(NetworkView has the excellent feature to set connections / edges in the control
which gives it an extra boost over the NodeXL). Perhaps Graph# can do even more,
but at the moment I just have tried those two.
You can approximate your bipartite graph visualization in NodeXL, and even improve on it by removing edge crossings. I took your sample bipartite graph, and in the image below I colored the nodes by their side (u or v). They are laid out using the Sugiyama algorithm that minimizes edge crossings. I did this in the interactive NodeXL template for Excel 2007--2013, but all these features should be available as the standalone NodeXL C# and WPF class libraries. The current libraries as of this post are available to download here.
I also tried NodeXL's group-in-a-box layout to separate the groups and display them each individually in a grid, with marginal results.
Disclaimer: I'm an advisor for the NodeXL project.
Actually if you could use client side jquery .. iwoul strongly recommend jqPlumbs..
http://www.jsplumb.org/jquery/demo.html
Ok, As you want,
Here is an example/library that let you create graphs and flowcharts easily,
http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a
It has actually very good features.
yFiles WPF is an extensive .NET class library for Windows Presentation Foundation (WPF) applications.
Its first-class UI controls for viewing and editing diagrams allow you to automatically arrange complex graphs, diagrams, and networks with the click of a button.
Our diagramming library crafted for Windows Forms-based applications is yFiles.NET
Graph# is a graph layout framework.
It contains some layout algorithms and a GraphLayout control for WPF applications.
Using WPF to Visualize a Graph with Circular Dependencies
If you can do it in Windows Forms, you can use NShape. Since the source is available, you could probably port it to WPF if you needed to. It might beat writing it from scratch. Or perhaps you could host a WinForms control to get the functionality you need. Not as nice as a pure WPF solution, though.
D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation
D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. For example, you can use D3 to generate an HTML table from an array of numbers. Or, use the same data to create an interactive SVG bar chart with smooth transitions and interaction.
D3 is not a monolithic framework that seeks to provide every conceivable feature. Instead, D3 solves the crux of the problem: efficient manipulation of documents based on data. This avoids proprietary representation and affords extraordinary flexibility, exposing the full capabilities of web standards such as CSS3, HTML5 and SVG. With minimal overhead, D3 is extremely fast, supporting large datasets and dynamic behaviors for interaction and animation. D3’s functional style allows code reuse through a diverse collection of components and plugins.
http://d3js.org/
http://mbostock.github.com/d3/talk/20111116/force-collapsible.html
I have a requirement to present in my c# windows application a "map" of a building, with different rooms coloured in various ways to indicate various things. This needs to be renderable at different sizes and from different perspectives, and needs not to be a one off exercise, but a repeatable process for different establishments.
I am thinking of it in terms of an old school level editor (think old ID stuff), the product of which can be rendered top down; it sounds like an awful lot of work to get into designing my own editing tool, so am looking for a way to hook an existing tool into c#.
I have got the .NET drawing code down (if need be), and I have got the Adobe Illustrator design down (again, if need be) - what I am looking for is a way to link the two, or (if appropriate) a suggestion to use something different in those two roles entirely. Any and all suggestions very gratefully received, thank you!
I'd look at Microsoft Visio - it seems more appropriate for architectural/schematic diagrams than Illustrator and there should be already .NET libraries to use Visio-generated drawings.
I am developing an application in C# which deals with specific genetic algorithm problem. The execution of the algorithm provides output parameters that are required to draw a chart.The graphic chart consists of 2 independent axis, lets say X is number of generation and Y represents corresponding maximum value of fitness function. To be more specific, I've uploaded picture from Excel so here it is :
http://img97.imageshack.us/img97/2046/graphnb.png
My priority is to make this application fully-functional by allowing user (who sets random execution factors such as mutation percentage, population and generation number, number of elite individuals, etc.) to see generated X-Y graph inside the generated "Form" in C#. I've found site that partially solves my problem, but that's not the whole point (http://csharp.net-informations.com/excel/csharp-excel-chart-picturebox.htm). So I'm asking if there is a way to implement mentioned graph by not using any other applications, but maybe only C# libraries and functions for plotting or something like that? Hope I made myself clear. Best regards.
Free and native answer is http://zedgraph.org/wiki/index.php?title=Main_Page
Does not involve WPF
Does not cost
Only C# libraries
Works inside a .NET WinForm
personally I like XtraChart of DeveloperExpress, but there are also many many other cheaper or more expensive alternatives, also other questions similar to yours here in SO: WPF chart controls
I like to use libraries whenever I can so I can focus on my real business case instead of trying to re-invent the wheel everytime, also because usually it's not trivial to reach the same level of results of people working hard to deliver specific components.
As all have said you have to work on WPF (different platform then WinForms) with 3rd party charting library that are much easier to integrate with your application.
If you want to know further about charting library then you should see this page
Click here
If you can use it, try WPF. It's much better for developing graphically rich user interfaces than standard Windows Forms -- especially if you don't want to use third-party libraries.