I have written a program in Python 2.7 with networkX which draws a tree with black and white nodes. Here is a minimal example:
import networkx as nx import matplotlib.pyplot as plt import numpy T = nx.Graph() ### Nodes white, black = [1, 4, 5, 6, 7], [2, 3] allNodes = white+black for node in allNodes: T.add_node(node) ### Edges T.add_edge(1, 2) T.add_edge(1, 3) T.add_edge(2, 4) T.add_edge(2, 5) T.add_edge(3, 6) T.add_edge(3, 7) ### Positions of the nodes pos={} pos[1]=numpy.array([ 0,0]) pos[2]=numpy.array([-2,1]) pos[3]=numpy.array([ 2,1]) pos[4]=numpy.array([-3,2]) pos[5]=numpy.array([-1,2]) pos[6]=numpy.array([ 1,2]) pos[7]=numpy.array([ 3,2]) ### Draw nodes and edges nx.draw_networkx_nodes(T, pos, nodelist=black, node_color='k', node_size=400, alpha=0.8) nx.draw_networkx_nodes(T, pos, nodelist=white, node_color='w', node_size=400, alpha=0.8) nx.draw_networkx_edges(T,pos,width=1.0, alpha=0.5) plt.axis('off') # Remove the axes plt.show() # Show the tree The code creates a window with a small tree containing 7 nodes and 6 edges. Now I want the nodes to disappear when I click at them with the mouse. How can I do this?
Later my plan is that 2 players alternate in turn by removing leafs or the root in their color (black and white). I.e. player 1 can only remove black leaves or black roots, and player two can only remove white leafs and white roots.
I found these links that could be helpful but couldn't get it to work:
- https://gist.github.com/Zulko/7629965
- https://gist.github.com/smathot/2011427
- Matplotlib / python clickable points
Anyone who knows how to accomplish this or have some tips?