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
Closed

Support graphs/trees/networks #187

bryevdv opened this issue Nov 16, 2013 · 37 comments

Comments

@bryevdv
Copy link
Member

@bryevdv 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 aidiss commented Aug 1, 2014

+1 for networkx support!

@datnamer
Copy link

@datnamer datnamer commented Sep 21, 2014

+1 for this!

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

@aidiss aidiss commented Oct 7, 2014

+1

1 similar comment
@jiaxu825
Copy link

@jiaxu825 jiaxu825 commented Nov 10, 2014

+1

@ajaykarpur
Copy link

@ajaykarpur ajaykarpur commented Nov 15, 2014

+1 for networkx

@hnykda
Copy link

@hnykda hnykda commented Nov 15, 2014

+1

@JosephCottam
Copy link

@JosephCottam JosephCottam commented Dec 5, 2014

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 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

@JosephCottam JosephCottam commented Dec 6, 2014

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

@bryevdv
Copy link
Member Author

@bryevdv 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

@bixb0012 bixb0012 commented Mar 13, 2015

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

@hhuuggoo
Copy link
Contributor

@hhuuggoo hhuuggoo commented Mar 13, 2015

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

@tonyfast tonyfast commented Jul 16, 2015

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

@birdsarah
Copy link
Member

@birdsarah birdsarah commented Aug 21, 2015

@ToferC
Copy link

@ToferC ToferC commented Aug 22, 2015

Would love to see native graphing support in Bokeh.

@tdennist
Copy link

@tdennist tdennist commented Aug 27, 2015

+1

2 similar comments
@kingdynasty
Copy link

@kingdynasty kingdynasty commented Aug 28, 2015

+1

@ngehman
Copy link

@ngehman ngehman commented Sep 13, 2015

+1

@rnowling
Copy link

@rnowling rnowling commented Dec 11, 2015

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

@datnamer datnamer commented Jan 13, 2016

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

@jainrp
Copy link

@jainrp jainrp commented Apr 19, 2016

+1 Add support for graphing in bokeh, please!

@denfromufa
Copy link

@denfromufa denfromufa commented Apr 28, 2016

+1

4 similar comments
@rodac5
Copy link

@rodac5 rodac5 commented Jun 2, 2016

+1

@mishig25
Copy link

@mishig25 mishig25 commented Jun 7, 2016

+1

@y-abe
Copy link

@y-abe y-abe commented Jul 6, 2016

+1

@kingdynasty
Copy link

@kingdynasty kingdynasty commented Jul 27, 2016

+1

@bryevdv
Copy link
Member Author

@bryevdv 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)

@abojchevski
Copy link

@abojchevski abojchevski commented Oct 26, 2016

+1

3 similar comments
@avyfain
Copy link

@avyfain avyfain commented Nov 19, 2016

+1

@b3yang
Copy link

@b3yang b3yang commented Dec 8, 2016

+1

@sumitbinnani
Copy link

@sumitbinnani sumitbinnani commented Dec 9, 2016

+1

@mbewley
Copy link

@mbewley mbewley commented Dec 24, 2016

+1

1 similar comment
@tgetachew18
Copy link

@tgetachew18 tgetachew18 commented Jan 17, 2017

+1

@bryevdv
Copy link
Member Author

@bryevdv 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 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

@threecifanggen threecifanggen commented May 10, 2017

+1

@canavandl canavandl mentioned this issue Jun 26, 2017
7 of 8 tasks complete
@bryevdv bryevdv moved this from Triage to Done in Must have tasks for 1.0 Oct 13, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Linked pull requests

Successfully merging a pull request may close this issue.