I'm using Neo4j for a research project and am struggling with a small problem.
The underlying data is a highly linked graph and I'm not able to visualize it in a good manner. As you can see in the screenshot, the relationships are overlapping and I can always just click the top one for further information. I already tried two approaches: try to hide relationships in the visualized result (Neo4j Browser with Cypher queries) and I was looking for alternatives to neo4j's built in visualization.
So my desired approach would be to just hide relationships from the visualized result. But even queries such as MATCH (a)-[t]->(b) WHERE t.probability > 0.1 RETURN a,b,t return less nodes and still display all relationships between this few nodes.
Does anybody know how to hide different relationships in the result? Or if it is not possible with neo4j's built in solution an open source or at least free visualization tool recommendation would be highly appreciated.
Some info about my graph: it displays a transition map (A Bayesian Network) of 10 zones and the probabilities of moving from one zone to another. There are a couple of relationships between each node, representing different time intervals. So in example 'Moving from A to B in less than an hour has a probability of 42%'
Neo4j server does an extra query for relationships after it retrieved the nodes, I'm not aware of an easy way to prevent that.
You could use something that uses a different approach to visualization.
E.g. like my demo app here that uses alchemy.js for visualization:
http://jexp.github.io/cy2neo/
Zonic,
If you click on a node or relationship, you will get a pop-up that has an option to view the graph stylesheet. From the dialog that pops up, you can download the contents, then modify the relationships that you don't wish to see to make the lines and text white. Drag and drop the modified, downloaded .grass file back into the stylesheet dialog, and see if that helps.
You could also try the gephi application and see what that does for you. It's free, and it is focused on visualization.
Grace and peace,
Jim
maybe you would like to try external applications as stated in this answer:
neo4j, Sorry! Too many neighbours
Do you mean basic filtering of the relationships, like this...
MATCH (a:Person)-[t:IS_RELATED_TO]->(b:Person) WHERE t.probability > 0.1 RETURN a,b,t
You can hide the extra relationships by turning off auto-complete with the switch in the bottom-right corner. By default Neo4j also fetches and displays relationships between returned nodes, even if they were not part of your query. With auto-complete turned off, Neo4j will only displayed the relationships returned by the actual query.
Related
Our company has a lot of data that are issue which are stored in a database.We want to create a search engine so that people can check how the issues were previously dealt with.We cannot use any 3rd party api as there is sensitive data an we want to keep it as in house. Right now the approach is as following :-
Clean up the data and then use a DOC2VEC to represent each issue as a vector .
Find the closest 5 issue using some distance metric.
The problem is that the results are not at all useful.The problem is most of the data is one liner and some issue description.There are spelling mistakes and stack traces and other things.
Is this the right approch or should we switch to something else?
Right now we are testing on 200K data.
Thanks for the help.
In Neo4J browswer, when you want to visualize some data, a nice interface is available for Cypher queries. The trouble is the nodes are continuously moving around, and usually 90% of them are off screen. Surprisingly I cant find much info on the purpose of this. is there a way to stop this annoying movement?
It's not possible 'easily' turn off shaking of the nodes in the Neo4j web console.
I am working on using Neo4j with py2neo for analyzing Twitter data. I'm a newbie in all of these, so the question might be pretty basic. But I could not find the answer in any of the documentations.
I have two csv files, one with 100 followers, the other with about 22000 tweets.
For the tweet I have informations like it is a reply to another tweet and the other users who have been mentioned in this tweet.
I want to add followers and tweets as nodes, then using the reply_to and the mentions_user field of the tweets to add connections between tweets (reply_to) and tweet and user (mentions).
Adding the nodes works well with batch. However, when I want to iterate through all Tweets using py2neo to add the relationships I get OutOfMemoryError: Java heap space.
I'm trying to iterate through the tweets like this:
for tweet in graph.find("Tweet")
My questions are now:
a) Is there another way in py2neo to iterate through (a lot of) nodes?
b) A little broader: I read in the py2neo documentation it is better to use cypher transactions than batch. Should I do that and could that also help for a)?
Thanks in advance for any help!
KMM
There are certainly ways to load bulk data effectively but this particular method (finding all items of a particular "type") is not one that takes advantage of the graph structure of the database and therefore won't scale well.
You can of course increase the Java heap size if this is a one-off and you may get away with it. But your best bet is probably to look into the LOAD CSV operation: http://neo4j.com/docs/stable/query-load-csv.html
I have three separate Fusion Tables, each one of which contains shape files for various political districts (Congress, State Assembly & State Senate). What I am looking to do is create a tool, very similar to that of Derek Eder's demo (http://derekeder.com/searchable_map_template/demo/index.html) that would allow a user to find there address, and then could select ONE of the overlays (using radio buttons instead of the checkboxes on Derek's example) in order to see what district they are within.
From the various questions asked previously as well as the other examples I have looked at online, I was hadnt necessarily seen something that would have led me to believe that a code example was grabbing multiple table data, but rather just parsing specific data from within one large table.
I guess I am just looking for guidance on where to start. Can the tool I described be put together fairly easily with three separate tables or would the tables need to be combined? Also, I would need to keep a location marker of the address search showing and the same coordinates, zoom level preserved while switching between the various layers. In my mind I can imagine that latter point wouldnt be difficult with a single table, but i had some concerns about keeping that view in place when toggling between separate ones.
Any and all help anyone could offer would be greatly appreciated!
I have pieces:
Marker from geocoded address used to spatially search a table
Example 1 Example 2
Zoom to polygon resulting from querying a FusionTable (uses two tables) Example
Unless there is something strange about your requirement that I missed in your post, it should be easily doable.
Basically I'm looking for a search engine that searches through a given database. The content will be text being searched.
You will probably want to use a service such as Solr. The easiest way to get started using it is to find a 'cloud' based version, such as Websolr. However, the solution will depend on what language you wish to use when programming your site.
Solutions depend somewhat on language:
1. For java/c#, you have lucene/solr
2. for python you have haystack
You could do text search in the DB directly via LIKE/ILIKE, but the performance depends on DB.
Iconfinder was coded specifically for icon search and at the time (launched in 2007) there were no scripts that worked well for this.
Building a search engine like Iconfinder is not rocket science. I think the hardest part is getting the SQL tuned and figure out how to rank the content. At the moment I collect data about impressions and downloads and calculate a value from that. The icons' rank is based on this value (download/impression) and how well keywords match the tags for the given icon.