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

Comments

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

This comment has been minimized.

aidiss commented Aug 1, 2014

+1 for networkx support!

@datnamer

This comment has been minimized.

datnamer commented Sep 21, 2014

+1 for this!

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

@aidiss

This comment has been minimized.

aidiss commented Oct 7, 2014

+1

1 similar comment
@jiaxu825

This comment has been minimized.

jiaxu825 commented Nov 10, 2014

+1

@ajaykarpur

This comment has been minimized.

ajaykarpur commented Nov 15, 2014

+1 for networkx

@hnykda

This comment has been minimized.

hnykda commented Nov 15, 2014

+1

@JosephCottam

This comment has been minimized.

Contributor

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

This comment has been minimized.

Member

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

This comment has been minimized.

Contributor

JosephCottam commented Dec 6, 2014

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

@bryevdv

This comment has been minimized.

Member

bryevdv commented Feb 25, 2015

@JosephCottam any update on experiments with networkX?

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

@bixb0012

This comment has been minimized.

bixb0012 commented Mar 13, 2015

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

@hhuuggoo

This comment has been minimized.

Contributor

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

This comment has been minimized.

tonyfast commented Jul 16, 2015

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

@birdsarah

This comment has been minimized.

Member

birdsarah commented Aug 21, 2015

@ToferC

This comment has been minimized.

ToferC commented Aug 22, 2015

Would love to see native graphing support in Bokeh.

@tdennist

This comment has been minimized.

tdennist commented Aug 27, 2015

+1

2 similar comments
@kingdynasty

This comment has been minimized.

kingdynasty commented Aug 28, 2015

+1

@ngehman

This comment has been minimized.

ngehman commented Sep 13, 2015

+1

@rnowling

This comment has been minimized.

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

This comment has been minimized.

datnamer commented Jan 13, 2016

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

@jainrp

This comment has been minimized.

jainrp commented Apr 19, 2016

+1 Add support for graphing in bokeh, please!

@denfromufa

This comment has been minimized.

denfromufa commented Apr 28, 2016

+1

4 similar comments
@rodac5

This comment has been minimized.

rodac5 commented Jun 2, 2016

+1

@mishig25

This comment has been minimized.

mishig25 commented Jun 7, 2016

+1

@y-abe

This comment has been minimized.

y-abe commented Jul 6, 2016

+1

@kingdynasty

This comment has been minimized.

kingdynasty commented Jul 27, 2016

+1

@bryevdv

This comment has been minimized.

Member

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

This comment has been minimized.

ncoghlan commented Oct 17, 2016

@abojchevski

This comment has been minimized.

abojchevski commented Oct 26, 2016

+1

3 similar comments
@avyfain

This comment has been minimized.

avyfain commented Nov 19, 2016

+1

@b3yang

This comment has been minimized.

b3yang commented Dec 8, 2016

+1

@sumitbinnani

This comment has been minimized.

sumitbinnani commented Dec 9, 2016

+1

@mbewley

This comment has been minimized.

mbewley commented Dec 24, 2016

+1

1 similar comment
@tgetachew18

This comment has been minimized.

tgetachew18 commented Jan 17, 2017

+1

@bryevdv

This comment has been minimized.

Member

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

This comment has been minimized.

Member

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

This comment has been minimized.

threecifanggen commented May 10, 2017

+1

@canavandl canavandl referenced this issue Jun 26, 2017

Merged

Canavandl/187 graph vis #6544

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