Repository: networkx/networkx

Issue:
Matplotlib2.0 compatibility
There are some deprecation warning with Matplotlib2.0rc2:

trigering code:
````python3
# Networks graph Example : #https://github.com/ipython/ipywidgets/blob/master/examples/Exploring%20Graphs.ipynb
%matplotlib inline
from ipywidgets import interact
import matplotlib.pyplot as plt
import networkx as nx
# wrap a few graph generation functions so they have the same signature

def random_lobster(n, m, k, p):
    return nx.random_lobster(n, p, p / m)

def powerlaw_cluster(n, m, k, p):
    return nx.powerlaw_cluster_graph(n, m, p)

def erdos_renyi(n, m, k, p):
    return nx.erdos_renyi_graph(n, p)

def newman_watts_strogatz(n, m, k, p):
    return nx.newman_watts_strogatz_graph(n, k, p)

@interact(n=(2,30), m=(1,10), k=(1,10), p=(0.0, 1.0, 0.001),
        generator={'lobster': random_lobster,
                   'power law': powerlaw_cluster,
                   'Newman-Watts-Strogatz': newman_watts_strogatz,
                   u'Erdős-Rényi': erdos_renyi,
                   })
def plot_random_graph(n, m, k, p, generator):
    g = generator(n, m, k, p)
    nx.draw(g)
    plt.title(generator.__name__)
    plt.show()
````

deprecation messages:
````
matplotlib\__init__.py:914: UserWarning: axes.hold is deprecated. Please remove it from your matplotlibrc and/or style files.
````

````
networkx\drawing\nx_pylab.py:126: MatplotlibDeprecationWarning: Future behavior will be consistent with the long-time
    default: plot commands add elements without first
    clearing the Axes and/or Figure.
  b = plt.ishold()
````


Discussion:
Hi, I am having a similar issue using it in ipython:

```
In [1]: import networkx as nx
In [2]: import matplotlib.pyplot as plt
In [3]: G = nx.Graph()
In [4]: G.add_nodes_from(range(1, 6))
In [7]: G.add_edge(1, 3)
In [8]: G.add_edge(3, 5)
In [9]: G.add_edge(5, 1)
In [10]: G.add_edge(2, 1)
In [11]: G.nodes()
Out[11]: [1, 2, 3, 4, 5]
In [12]: G.edges()
Out[12]: [(1, 3), (1, 5), (1, 2), (3, 5)]

In [13]: nx.draw(G)
```

And here is the output:

```
/usr/local/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:126: MatplotlibDeprecationWarning: pyplot.hold is deprecated.
    Future behavior will be consistent with the long-time default:
    plot commands add elements without first clearing the
    Axes and/or Figure.
  b = plt.ishold()
/usr/local/lib/python3.6/site-packages/networkx/drawing/nx_pylab.py:138: MatplotlibDeprecationWarning: pyplot.hold is deprecated.
    Future behavior will be consistent with the long-time default:
    plot commands add elements without first clearing the
    Axes and/or Figure.
  plt.hold(b)
/usr/local/lib/python3.6/site-packages/matplotlib/__init__.py:917: UserWarning: axes.hold is deprecated. Please remove it from your matplotlibrc and/or style files.
  warnings.warn(self.msg_depr_set % key)
/usr/local/lib/python3.6/site-packages/matplotlib/rcsetup.py:152: UserWarning: axes.hold is deprecated, will be removed in 3.0
  warnings.warn("axes.hold is deprecated, will be removed in 3.0")
```

PyPlot did create a plot, but looks like some things were deprecated in Matplotlib 2.0.0

Resolving patch:
diff --git a/networkx/drawing/nx_pylab.py b/networkx/drawing/nx_pylab.py
--- a/networkx/drawing/nx_pylab.py
+++ b/networkx/drawing/nx_pylab.py
@@ -38,7 +38,7 @@
            'draw_shell']
 
 
-def draw(G, pos=None, ax=None, hold=None, **kwds):
+def draw(G, pos=None, ax=None, **kwds):
     """Draw the graph G with Matplotlib.
 
     Draw the graph as a simple representation with no node
@@ -60,10 +60,6 @@ def draw(G, pos=None, ax=None, hold=None, **kwds):
     ax : Matplotlib Axes object, optional
        Draw the graph in specified Matplotlib axes.
 
-    hold : bool, optional
-       Set the Matplotlib hold state.  If True subsequent draw
-       commands will be added to the current axes.
-
     kwds : optional keywords
        See networkx.draw_networkx() for a description of optional keywords.
 
@@ -122,19 +118,13 @@ def draw(G, pos=None, ax=None, hold=None, **kwds):
 
     if 'with_labels' not in kwds:
         kwds['with_labels'] = 'labels' in kwds
-    b = plt.ishold()
-    # allow callers to override the hold state by passing hold=True|False
-    h = kwds.pop('hold', None)
-    if h is not None:
-        plt.hold(h)
+
     try:
         draw_networkx(G, pos=pos, ax=ax, **kwds)
         ax.set_axis_off()
         plt.draw_if_interactive()
     except:
-        plt.hold(b)
         raise
-    plt.hold(b)
     return
 
 


Test patch: