Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support graphs/trees/networks #187

Closed
bryevdv opened this issue Nov 16, 2013 · 37 comments · Fixed by #6544
Closed

Support graphs/trees/networks #187

bryevdv opened this issue Nov 16, 2013 · 37 comments · Fixed by #6544

Comments

@bryevdv
Copy link
Member

bryevdv commented Nov 16, 2013

Need to add support for visualizing graph data. Need to integrate with various formats (dot, networkx, etc.), support things like force directed layouts, etc.

@aidiss
Copy link

aidiss commented Aug 1, 2014

+1 for networkx support!

@datnamer
Copy link

+1 for this!

@damianavila damianavila added this to the long-term milestone Oct 2, 2014
@aidiss
Copy link

aidiss commented Oct 7, 2014

+1

1 similar comment
@jiaxu825
Copy link

+1

@ajaykarpur
Copy link

+1 for networkx

@hnykda
Copy link

hnykda commented Nov 15, 2014

+1

@JosephCottam
Copy link

As a first step, we could integrate static graph layouts based on the charts interface. You do all of the layout at graph creation time in python then no JS graph components are required.

@bryevdv
Copy link
Member Author

bryevdv commented Dec 6, 2014

Another first step would be to make the MPL support robust enough so that networkx (or some subset of it, anyway) works out of the box with mpl.to_bokeh. Failing that, we could use networkx to do the static layout in python ourselves. In either case I agree that static layout in python is the most reasonable place to start, unless someone with JS graph experience shows up and wants to help expose graph primitives in BokehJS.

@JosephCottam JosephCottam self-assigned this Dec 6, 2014
@JosephCottam
Copy link

I will take a first stab at it, since I want to use it for another project.

@bryevdv
Copy link
Member Author

bryevdv commented Feb 25, 2015

@JosephCottam any update on experiments with networkX?

Also, a potentially useful reference from @pzwang http://sigmajs.org/

@bixb0012
Copy link

Although this is already a long-term milestone,
+1

@hhuuggoo
Copy link
Contributor

The other thing we could do is render an svg on top of the canvas and then allow a few d3 based renderers

@tonyfast
Copy link

While this issue is still pending. Please see this notebook example that uses Bokeh to plot NetworkX graphs.

@birdsarah
Copy link
Member

You might also be interested in the network I've been working on with @gmarkall - http://nbviewer.ipython.org/github/gmarkall/wot/blob/master/wot/notebooks/Visualize%20the%20WOT.ipynb?flush_cache=True

screenshot from 2015-08-21 14 39 42

@ToferC
Copy link

ToferC commented Aug 22, 2015

Would love to see native graphing support in Bokeh.

@tdennist
Copy link

+1

2 similar comments
@kingdynasty
Copy link

+1

@ngehman
Copy link

ngehman commented Sep 13, 2015

+1

@rnowling
Copy link

It would very nice if bokeh supported collapsable trees for visualizing things like file systems or hierarchical data. Not sure if this would be same implementation as this issue or a new issue.

@datnamer
Copy link

Heres an interesting ggplot inspired take on a graph plotting api https://github.com/thomasp85/ggraph

@jainrp
Copy link

jainrp commented Apr 19, 2016

+1 Add support for graphing in bokeh, please!

@den-run-ai
Copy link

+1

4 similar comments
@rodac5
Copy link

rodac5 commented Jun 2, 2016

+1

@mishig25
Copy link

mishig25 commented Jun 7, 2016

+1

@y-abe
Copy link

y-abe commented Jul 6, 2016

+1

@kingdynasty
Copy link

+1

@bryevdv
Copy link
Member Author

bryevdv commented Jul 27, 2016

If rendering graph data that is layed out statically on the python side is sufficient, see e.g.

https://github.com/bokeh/bokeh/blob/master/examples/plotting/file/graphs.py

which is possible as of 0.12.0.

Adding dynamic graph layout to the JS side is another matter. To add it to the core library will require lots of deliberation, planning, testing. However, it would probably not be too difficult to write a custom extension that wraps e.g. the d3 graph layout library (or another JS library) and connects it to Bokeh python. There's a new user's guide section on extending Bokeh that could be helpful:

http://bokeh.pydata.org/en/latest/docs/user_guide/extensions.html

We could also help anyone develop a custom extension by answering questions, etc. I'd suggest this is probably the quickest route for now, and the custom extension could be shared with the community which I am sure many people would appreciate. (Making it trivial to create and share extensions is on the short term roadmap, so that the community can move forward itself, and not have to "wait on us" for everything)

@ncoghlan
Copy link

Another attempt at getting this working from EuroPython 2016: http://nbviewer.jupyter.org/urls/ep2016.europython.eu/media/conference/slides/networkx-visualization-powered-by-bokeh.ipynb

@abojchevski
Copy link

+1

3 similar comments
@avyfain
Copy link

avyfain commented Nov 19, 2016

+1

@b3yang
Copy link

b3yang commented Dec 8, 2016

+1

@sumitbinnani
Copy link

+1

@mbewley
Copy link

mbewley commented Dec 24, 2016

+1

1 similar comment
@tgetachew18
Copy link

+1

@bryevdv
Copy link
Member Author

bryevdv commented Jan 17, 2017

Please, there is no use to continued +1 It does not add any information or help. I will repeat what I said earlier this year:

If rendering graph data that is layed out statically on the python side (e.g. by using NetworkX) is sufficient, see e.g.

https://github.com/bokeh/bokeh/blob/master/examples/plotting/file/graphs.py

which is possible as of 0.12.0.

Adding dynamic graph layout to the JS side is another matter. To add it to the core library will require lots of deliberation, planning, testing. However, it would probably not be too difficult to write a custom extension that wraps e.g. the d3 graph layout library (or another JS library) and connects it to Bokeh python. There's a new user's guide section on extending Bokeh that could be helpful:

http://bokeh.pydata.org/en/latest/docs/user_guide/extensions.html

We could also help anyone develop a custom extension by answering questions, etc. I'd suggest this is probably the quickest route for now, and the custom extension could be shared with the community which I am sure many people would appreciate. (Making it trivial to create and share extensions is on the short term roadmap, so that the community can move forward itself, and not have to "wait on us" for everything)

@bryevdv bryevdv modified the milestones: short-term, long-term, 0.12.7 May 9, 2017
@bryevdv
Copy link
Member Author

bryevdv commented May 9, 2017

There is now supported work to add network/graph capability to Bokeh, for not-huge graph sizes. There is corresponding supported work to add complementary capability to Datashader for large graph sizes. Tenatively marking for 0.12.7

@threecifanggen
Copy link

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
No open projects
Development

Successfully merging a pull request may close this issue.