Visualize Friend of a Friend (foaf) graph - visualization

I wrote a script to export twitter friends as foaf rdf description. Now I'm looking for a tool to visualize the friend networks. I tried http://foafscape.berlios.de/ but for 300+ Nodes it is really slow and does a bad job on auto formatting.
Any hints for good graph visualization tools? It's ok if they do not support foaf directly, but they should be able to use images for graph nodes and be able to display large graphs. Linux support would be nice.
Oh, and I'm searching for an interactive tool where I can move nodes by hand.
Update: Thanks for your input. I know graphviz and for static images it is really great. But for large datasets I need to be able to select nodes and highlight all neighbours.
Prefuse looks great: http://prefuse.org/gallery/graphview/
trough prefuse I found vizster, which is exactly what I search (just need to find some sourcecode) http://jheer.org/vizster/

perhaps the prefuse visualization toolkit might help you. It's based on Java and has many sample apps including a graph viewer.

You could try Graphviz. It runs on Linux, Windows and Mac OS X and it will generate an image (PNG, PS, etc) of the graph. You will have to transform your foaf data into its own custom language, but it's pretty easy to learn.

I don't know of any program that auto-generates graph visualizations and allows you to interactively adjust nodes, but Graphviz is a really popular tool for graph visualization. It can export to SVG so you can edit the result in your favorite vector graphics editor.

As recommended by other posters, definitely Graphviz. It takes an input file, let's call it foaf.dot, in the following format:
graph G {
"George Formby" [shape=custom, shapefile="file:formby.png"];
"Michael Jackson" [shape=custom, shapefile="file:jackson.png"];
"George Formby" -- "Michael Jackson";
"Fred Flinstone" -- "Michael Jackson";
"Michael Jackson" -- "Steve McQueen";
}
Note that this file describes an undirected graph (hopefully your friendships are reciprocal). The syntax for directed graphs is similar.
In order to output your graph to a pdf file (assuming that you have already installed graphviz) run the following command
dot -Tpdf foaf.dot > foaf.pdf
Graphviz supports a number of output formats other than pdf, see its documentation for details.
I find that the 'dot' program usually provides the best output results, however graphviz contains a total of 5 layout programs. From the documentation:
dot - filter for drawing directed graphs
neato - filter for drawing undirected graphs
twopi - filter for radial layouts of graphs
circo - filter for circular layout of graphs
fdp - filter for drawing undirected graphs

I previously recommended Graphviz, but thought I should add another recommendation now that I have used Gephi, a newer tool than a lot of the stuff here. It's a very powerful interactive graph exploration tool which I have found much more usable and much faster than a lot of the alternatives here.

Try using Google Social Graph. In one of the talks at dConstruct08 last week there was a social graph showing the friend connections of Robert Scoble.
http://code.google.com/apis/socialgraph/
http://dconstruct.org/2008

If you're using Java, you could use JGraph.

I know Adobe Flex has a few graph visualization components out there, and of course that would enable the app to run on Flash which has an excellent penetration rate into your potential userbase. I'd Google up the Flex SpringGraph component, and check that out. There are a ton of graphing components in the wild for Flex, both paid and free versions.
Just one SpringGraph off the top of my head:
http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1048510

check this forum: http://goosebumps4all.net/34all/bb/forumdisplay.php?fid=28
for some flare examples, there is a friend of a friend graph around there.

have you tried the Python-based IDE NodeBox (1.0)? That's what I used to generate these: http://givememydata.com/#images
vizster looks cool though, I'll check out that.

For large graphs, Gephi (http://gephi.org/) is very popular. It is highly customisable, with lots of layout and presentation options.

Related

How to draw nodes and edges in blog

I started writing a blog. I am new at it.
can someone help me how to draw nodes/edges and also colouring/editing like this:
Is there any software or any website, where i can get help?
Example: like this post, I want to draw image like that and how to code like that in a box.
Here are several ways of drawing a "professional" looking graph:
Use Graphviz, e.g. with a graph defined through a .dot file.
Use tikz in LaTeX, e.g. in Overleaf.
Draw it manually in e.g. Google Slides, and stylize it with e.g. Times New Roman font.
The first two approaches have the advantage that you don't draw anything directly, but rather define the graph textually, which also makes it easy to edit later if needed.
Another option is Cacoo, an Online Diagram and Flowchart Software. Free trial and easy WYSIWYG interface available on cacoo.com. I did with Cacoo two diagrams that I included in my BSc thesis and both were very similar to the one included in your question.
Instead, if using LaTeX, the package forest may be appropriate.

Advanced charting or plotting in JavaFx?

I'm looking for a way to have more features than the basic JavaFx charts provide.
"realtime" plotting of < 50 points divided into multiple scatter series
adding custom text labels to points in scatter
drawing some lines inside the chart
maybe custom color for single some scatter points
I've already seen some people using multiple charts overlayed with transparent background. I'm not sure if this is good solution that will work with future updates to JavaFx.
Now I'm looking for suggestions. Thanks in advance!
I spent a lot of time looking for a free Java plotting library that is compatible to the Eclipse Public License (JFreeChart is not), supports SVG export (JavaFx charting does not) and let me specify plots in detail. The plotting capabilities should be similar to the features of the free scientific plotting tool Veusz that is based on python and QT. Veusz allows for example to set the orientation and size of minor ticks and everything else I ever wanted to tweek.
I used the charting features of JavaFx and tried to write a converter from JavaFx to SVG ... and stopped that after a certain amount of frustration:
https://github.com/stefaneidelloth/JavaFxNodeToSvg
Finally I decided to write javafxd3, a Java wrapper for d3.js based on the WebView and the code from gwt-d3:
https://github.com/stefaneidelloth/javafx-d3
That wrapper is applied in my main project Treez to provide some atoms for scientific plotting in Eclipse:
https://github.com/stefaneidelloth/treez
javafxd3 works well if you do not need to transfer much data between Java and JavaScript. The WebView has some performance issues/limits that can be relevant for more advanced applications. Have a look at the demo suite of javafxd3 to get an idea of that limitations and read
Performance of WebView in JavaFX
With the wrapping strategy of javafxd3 it is also possible to use plotly.js and other advanced JavaScript plotting libraries that are based on d3.js for your JavaFx application.
In the last two years there has not been much progress in JavaFx. The SceneBuilder has been abandoned by Oracle and JavaFx might be a dead end. If the charting features of JavaFx do not fit your needs and you don't want to use my JavaScript embedding work around javafxd3 ... check if JFreeChart fulfills your needs regarding licensing and features:
http://www.jfree.org/jfreechart/
If you are actually not limited to Java I would recommend Veusz/Python:
https://veusz.github.io/
or the direct usage of some JavaScript libraries:
https://d3js.org/
https://plot.ly/javascript/
Edit
I do not use Java and the wrapper any more but directly JavaScript.
I don't have an exact solution, but I had a similar need. I found that charting libraries were fairly poor in most programming languages.
However, I found that JavaScript had a huge selection of good charting (plotting) libraries.
My suggestion is to use a webview, and then display the chart in that using JavaScript and html using a library like d3 or dimple. If you don't know any CSS/html/JavaScript there might be a learning curve.

chart library which can edit graph by dragging points?

I'm looking for preferably javascript (but flash would do too) charting library which would be able to render time series as line chart and then allow to drag points in chart to change the underlying data.
I was said that Excel can do exactly the same thing, but I need it on web. No well-known charting library like Highcharts, amCharts, GoogleCharts or dygraphs cand apparently do that - I found some draggable graphs solutions like WireIt or http://radokirov.com/js-graph-editor/ but these are nodes and edges types of graphs not really-usable for chart drawing.
Do you know any ready for use solution to this problem? I don't care whether it's opensource or commercial.
Late response; I might help future visitors, though.
I'm looking for something similar. try: http://www.jqplot.com/deploy/dist/examples/customHighlighterCursorTrendline.html
Some other options (hopefully helpful to future visitors):
FusionCharts: https://www.fusioncharts.com/charts/visually-editable-charts/editable-line-chart
Chart.js (plugin): https://github.com/chrispahm/chartjs-plugin-dragData

Where can I find a web-based interactive org chart API?

I'm looking to build an interactive web-based org chart for a large organization. I somewhat like the interface at ancestry.com where you can hover over people and pan/zoom around and click on different nodes to make them the root.
Ideally, I'd like it if people could belong to multiple organizational entities like committees, working groups, etc. In other words the API should support graphs in general, not just trees.
I'd like to be able to visually explode each organizational substructure into substituents by clicking on it, with a nice animation of the employees ballooning or spilling out so you can really interactively drill down through the organization.
I found http://code.google.com/apis/visualization/documentation/gallery/orgchart.html but it looks a bit rudimentary.
I know there are desktop tools like OrgPlus and Visio that can build static charts but I'm really looking for a free, web-based API with open standards-based output like SVG or HTML5 Canvas elements rather than Flash or some proprietary output. Something I can embed into a custom web application and style myself. Something interactive.
Check my solution on github: OrgChart.svg This is a modern full SVG orgchart with support of custom styling, tip-over / stacking possibility in the best known form. I would be very happy if it helps someone. It is based on snap.svg.
I ended up using the SpaceTree API from the Javascript InfoVis Toolkit to build my org chart:
http://philogb.github.com/jit/static/v20/Docs/files/Visualizations/Spacetree-js.html
I've had a go at building this in d3.js. It was originally built for data pulled from Yammer but now it will work with any csv - like this one.
Here's the repo and here's a demo. You will need to know a little html/javascript to customise it for your application.
There is this one for asp.net but I have only ever added it to my bookmarks so I can't vouch for how standards compliant it is:
http://www.orgchartcomponent.com/
Something you should also consider when you are looking in to this is your charting requirements. Many org charts only support a single top node. If you wanted to map a family tree for example then this might not be the case.

How do I create graphs in Perl on Windows?

How do I use Perl to create graphs?
I'm running scheduled job that creates text reports. I'd like to move this to the next step (for the management) and also create some graphs that go along with this. Is this possible / feasible? It'd be great if I could do this using Office some how.
update: solutions i'm going to investigate in this order
Spreadsheet::WriteExcel (this seems to now have changed from the last time i investigated this .... wait, this was suggested by the author of the module. cool.)
GD Graph - this is now available for ActivePerl(wasn't last time i looked)
SVG
Open Charts look interesting.
Chartdirector
GD and GD::Graph are probably your best bets, you can use them to create images that you can then embed into whatever you need.
All of the methods mentioned above are really good, but personally I like SVG::TT::Graph. I really like the power that SVG gives you to draw really nice-looking graphs.
Also you can take a look at Google Charts CPAN module
use Google::Chart;
my $chart = Google::Chart->new(
type => "Bar",
data => [ 1, 2, 3, 4, 5 ]
);
print $chart->as_uri, "\n"; # or simply print $chart, "\n"
$chart->render_to_file( filename => 'filename.png' );
At work we have used the excellent Chartdirector.
It's not free, but is very cheap (maybe 50 bucks or so). The cost is well worth it, as the API and docs are both excellent (way better than GD!), so easily saved more than that amount of my time.
There's also a free version, which includes a small yellow banner advertising the product on each chart - to be honest if this is for personal use, you can go for that as it's really not very intrusive at all.
Chartdirector is available for lots of platforms (Win, Linux, Solaris, BSD, OSX) and has an API for lots of languages, too (Perl, ASP, .NET, Java, PHP, Python, Ruby, C++).
The output is easy on the eye, as you can see at their examples page.
Sorry for blowing my own trumpet, but you might be interested to have a look some slides I did for a short presentation about Graphing With Perl.
It mentions some of the suggestions here, but also gives you some code snippets that you might be able to use to help you get the most of what you're doing.
Depending on the complexity of your graph, simply generating a command file for Gnuplot—or GraphViz/Dotty, depending on what kind of graph you are referring to—might do the trick?
The Perl module Spreadsheet::WriteExcel allows you to create Excel workbooks that include charts.
You first have to create the type of chart that you want in Excel and then extract it out using a utility called chartex which is installed with Spreadsheet::WriteExcel.
The chart template can then be added to a new workbook and made to reference new data.
The documentation is here and there are several examples in the charts directory of the distro.
The mechanism is a little inflexible however and the it is sometimes tricky to get the exact result that you want.
Haven't tried it yet but Chart::Clicker looks quite nifty.
I think it uses the Cairo graphic library (alternative to GD) but is actually built on top of Graphics::Primitive which is an "interesting" graphics agnostic package.
The author in question (GPHAT) seems to be putting together some integrated tools for producing reports... http://www.onemogin.com/blog/582-pixels-and-painting-my-recent-cpan-releases
On a side note... have used both ChartDirector and OFC and both are good (especially if web based).
Spreadsheet::WriteExcel::Chart
You might need something like strawberry or vanilla Perl to get this to compile. Or PPM might have the module.
Tutorial link:
http://search.cpan.org/dist/Spreadsheet-WriteExcel/charts/charts.pod
It won't work with Office, but I really like Chart::OFC which will create Open Flash Charts. Very slick looking and easy to use.
It depends to a great extent what sort of graphs (the look of them), and the data-source. I've had some good result by using the YUI Charts and feeding them some JSON style versions of the original source data. Rolling over a live chart for exact values is quite easy for example. There are plenty of examples on the developer pages.
If you're set on doing this in MS Office you can use the Win32::OLE module to control Excel via OLE. Be warned, that this tends to run slowly and it can be difficult to find documentation for Excel's API. On the plus side, it allows you to do pretty much everything that you can do manually.
Metaprograming of course! Output an R script that creates the graph.
PGPlot does great graphs. There are some examples here. It works fine with Perl 5.8.8 but is broken in 5.10.0
Spreadsheet::WriteExcel will let you just get the data into Excel, then write Excel equations for the graphs.