Is there a 3D version of GraphViz? - java

I find GraphViz easy to use, but it renders 2D graphs. Is there an equivalent that renders 3D graphs? The nodes could stay 2D but the graph as 3D would be great. If not, is there an alternative such as using a Perl module or Java package?
My searches only result in 3D gaming engines.

With GraphViz, you can render directly to VRML:
dot -Tvrml graphviz.dot > graphviz.vrml
Then you can use this tool (a java jar that can be run from the command line) to convert VRML to X3D:
http://www.deem7.com/vrmlmerge/howto.php
And then view the X3D file in a browser using the following techniques:
http://doc.x3dom.org/tutorials/models/inline/index.html
Update (years later): deem7.com seems to have gone away, although you can find the original tool via the wayback machine, there are other online tools that seem to do this. Example: https://doc.instantreality.org/tools/x3d_encoding_converter/

There is not a great interactive tool I know about, but you can generate a 3D layout in Pajek and then use the King viewer in a website. You can see an example in this YouTube video, with a screenshot here:
Just so you know, while 3D graph visualizations look pretty they are actually quite poor at showing graph structure due to lots of occlusion. This is even worse for a static image with no interaction. I would highly suggest using a good 2D graph visualization system like Gephi, NodeXL, or Cytoscape. Disclaimer: I am an advisor for the NodeXL project.

Related

Android Advanced Image processing

I want to build a Image editing application. I've gone through convolution matrix for creating basic color filters but I want the app to also have advanced editing capabilities like highlight/shadow adjustment, vignette, curves adjustments etc.
Any chances that I might find some examples for the same to learn more about it. Also, any kind of helpful resources would be a great help.
P.S. If there is an existing image editing library/sdk that can get the job done, that would be great too
You should look at opencv and vxl. They are libraries of computer vision functions and have open source community around them. Opencv is a big library/community. I was looking into image processing libraries for some ideas I have (permanantly stuck in pre-development due to lack of time) and I have played with them a bit on linux. I'm still very much an opencv/vxl n00b though.
https://en.wikipedia.org/wiki/OpenCV
I found vxl a bit faster to get started with.
https://en.wikipedia.org/wiki/VXL
There is support for opencv on Android:
http://opencv.org/platforms/android.html
There is not support for vxl on android as far as I can see.
Now, both of these are pretty big projects. I would say there is ALOT to learn and it will take a while. But I think it is probably well worth-while learning. There are many tutorials and examples.
Get the source code first:
$ git clone https://github.com/Itseez/opencv
$ git clone http://git.code.sf.net/p/vxl/git vxl
Especially for a mobile platform it will be important to get the use of image processing right - so that it doesn't kill battery of device - so . . . lots of experimenting and testing and learning to do!
Have fun!

GraphViz : Interactive swing ui?

Hi : Is there a way to convert a graphviz file into a GUI (i.e. using swing) ? I want to be able to click on nodes, and plugin popups or actionlisteners associated with each node in a graphviz interface.
Im sure there exist some java API's for dealing with graphviz data, so I may simply convert a graphviz object into a jgraphT graph, and visualize that way.... But Im keeping my hopes up that somebody has had this idea before and, maybe, there exists a graphviz-ui builder, somewhere out there.
I wouldnt mind if such a ui existed in another language (i.e. python) ... But java would be my preference.
A Related Question
Certainly, there are other people thinking along these lines : Interactive Graphviz graphs in a web application
However, I want to use graphviz to debug a large data flow, which we have mapped visually library, wherein I want to click a node, and then read some files from the local disc based on that click . Thus, a simple javascript gui to graphviz might not be a valid solution for me.
I have used ZGRViewer, which is open source java.
It lets you navigate the graphviz generated svg, and might be a good starting point for your project.
It's not a UI builder, or API as the details of your question ask, but it is a nice graphviz interactive ui, and you might be able to get some hooks in on the existing click command.

Local application with maps

I'm currently building a web application using Google Maps. Unfortunately, I've reached the absolute maximum limit that Javascript will reach for all of the different things I'd like to do, and we're exploring all of the alternatives.
We've looked at server-side caching and pre-generation/computing. It's definitely a possibility, but supposedly even that is 'too slow' while trying to plot 100k+ points in one go. As everything (as always) needs to always load instantly (or as near as darnit), I'm looking at a local application as an alternative.
Before I put forward the idea (which I already know that everyone will go for), there are two things I'm looking at first:
Can I use Google Maps locally?
I want to take the application between just PC and Mac. I'm a WPF and Web developer. Windows side, fine. Mac, however, doesn't play so nicely with those technologies. Is it time for me to bite the bullet and learn Java?
Thanks for your help!
No idea if this meets their TOS, but you could look into: http://www.howtogeek.com/90565/how-to-download-google-maps-for-offline-use/
Java AFAIK is the most main-stream high level cross-platform language for desktop applications.
Mono install rate on macs is probably extremely low in comparison to Java, though that might not be a problem if you use mkbundle. and WPF isn't supported (though GTK# is). You could do Silverlight/Moonlight, which are supported outside the browser, and quite similar to WPF.
You could also look at using C++ or Python with wxWidgets. Though if you go with Python, there are a ton of GUI libraries for it.
As I understand it, your map application involves plotting 100,000+ markers (latitude/longitude points) on a single map. You presently draw the markers on the map using JavaScript code and function calls.
Consider sticking with web-hosted Google Maps, and using one of two alternate implementation approaches.
Aggregate points. You can try drawing 100 markers onto the same screen pixel, but the user won't get any more information than if you just drew one marker. Consider aggregating multiple closely-spaced markers into aggregate markers. Google's docs have suggestions about how to do this in "Too Many Markers!", by Luke Mahe and Chris Broadfoot, Google Geo APIs Team, December 2010 (http://code.google.com/apis/maps/articles/toomanymarkers.html).
Draw markers yourself onto custom map tiles. I'm involved with a maps application which uses the Webfoot Map Tile Generator code, which takes this approach to draw approx 50,000 dots on a map of the continental US marking the location of each US Zip Code. See (http://maps.webfoot.com/demos/election2008/), and in the left pane, under "Dots Layer", select "Zip Codes" in the pull-down menu. Drawing your own map tiles isn't easy, but it's very powerful, and the Webfoot code shows it can be fast. Google doesn't completely document how to do this. But start with their description of implementing "your own custom map type using GMapType" (code.google.com/apis/maps/documentation/javascript/v2/overlays.html#CustomMapTiles) in the Maps Javascript API v2. The equivalent for the Javascript API v3 appears to be missing from (code.google.com/apis/maps/documentation/javascript/overlays.html#CustomMapTypes).

Searching for Java library to build an app that interacts with data

I have a project where I should analyse data via cluster analysis. Basically the data should be visualised like this picture shows
Each dataset - for example let it be people - is one horizontal row, where vertical lines showing the attributes like sex, age, and so on.
Now if this data could be shown I also want to move the rows horizontal and also vertical a) via code and b) via drag & drop.
Do anybody know a good library for that?
Important
Target is desktop application
Expected datasets around 500
Attributes for each data set around 60
There is an app in Java/SWT already, so solutions in this direction would be preferred
The OS is Win7 so C# or similar would be a stopgap
I really like d3.js, and would prefer a similar lock & feel (but in 3D)
If somebody has recommendations for a library which helps to analyze the data, please step forward too!
Check What is the best open-source java charting library? and Libraries for pretty charts in SWT? for more info.
I did used JFreeChart with SWT (2 years ago). The code is quite horrible (you have to write tons of code), but it works and is directly renderable with SWT components (no need of SWT_AWT bridge).
EDIT
When I thought about it again, I realized, that you can use the JavaScript library through Browser widget. It's quite heavyweight solution, but it might work..
You can do this in d3 but it is a very involved process in which you need to deal with the ismoetric perspective and the rest. It shouldn't be terribly complicated but it will not be an out-of-the-box solution.

Flex 2D graphics learning path for Java/GWT developer?

I have been developing with Java for several years and last six months I have been building GWT based application. But I have almost no Flash or Action Script experience and I would like to try out some hobby programming with Flex. Especially 2D graphics and image manipulation would be interesting topics.
Adobe's tutorials for Java developers are naturally the starting point but I would need some pointers for graphics. Something like drawing 2D graphics based on data from the server or modifying image uploaded by user. How much can be done on the Flex and what must be done on the server side?
For drawing you don't need the 'full' flex library, flex will mostly provide you with a nice set of GUI components and some ways to integrate with your back-end server easily.
If you just want to draw something check out the Graphics object http://livedocs.adobe.com/flex/3/langref/flash/display/Graphics.html - it works similar to the java Graphics object.
If you want to modify an image uploaded by the user you are of course already at the server (because the image was uploaded) - however the new flash player (version 10) allows some manipulations of local data as well, so it might even be possible to show a modified image that was not even uploaded, see http://www.mikechambers.com/blog/2008/08/20/reading-and-writing-local-files-in-flash-player-10/ for example.
Flex/AS3 will feel a bit weird to a java programmer - parts of it are very easy and other parts will be frustrating, tooling support is worse, slow compiler, no support for running unittests without jumping through lots of hoops (don't get me started...). But as a deployment platform I must say I like it a lot.

Categories