title: ValueError: Axes instance argument was not found in a figure
body: <p>I am studying scikit-learn with 'Learning scikit-learn: Machine Learning in Python by Raúl Garreta'. </p>
  
  <p>In jupyter Notebook, from code <code>In[1]</code> to <code>In[7]</code> it works. But <code>In[8]</code> code does not work. Which is wrong? </p>
  
  <pre><code># In[1]:
  from sklearn import datasets
  iris = datasets.load_iris()
  X_iris, y_iris = iris.data, iris.target
  print X_iris.shape, y_iris.shape
  
  # In[2]:
  from sklearn.cross_validation import train_test_split
  from sklearn import preprocessing
  X, y = X_iris[:, :2], y_iris
  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
  print X_train.shape, y_train.shape
  
  # In[3]:
  scaler = preprocessing.StandardScaler().fit(X_train)
  X_train = scaler.transform(X_train)
  X_test = scaler.transform(X_test)
  
  # In[4]:
  get_ipython().magic(u'matplotlib inline')
  import matplotlib
  from matplotlib import pylab
  import numpy as np
  import matplotlib.pyplot as plt
  colors = ['red', 'greenyellow', 'blue']
  for i in xrange(len(colors)):
      xs = X_train[:,0][y_train == i]
      ys = X_train[:,1][y_train == i]
      plt.scatter(xs, ys, c=colors[i])
  plt.legend(iris.target_names) 
  plt.xlabel('Sepal length')
  plt.ylabel('Sepal width')
  
  # In[5]:
  from sklearn.linear_model import SGDClassifier
  clf = SGDClassifier()
  clf.fit(X_train, y_train)
  
  # In[6]:
  print clf.coef_
  
  # In[7]:
  print clf.intercept_
  </code></pre>
  
  <p>Codes in In[8] does not work. </p>
  
  <pre><code># In[8]:
  x_min, x_max = X_train[:,0].min() - .5, X_train[:,0].max() +.5
  y_min, y_max = X_train[:,1].min() - .5, X_train[:,1].max() +.5
  xs = np.arange(x_min, x_max, 0.5)
  fig, axes = plt.subplots(1,3)
  fig.set_size_inches(10, 6)
  for i in [0, 1, 2]:
      axes[i].set_aspect('equal')
      axes[i].set_title('Class '+ str(i) + ' versus the rest')
      axes[i].set_xlabel('Sepal length')
      axes[i].set_ylabel('Sepal width')
      axes[i].set_xlim(x_min, x_max)
      axes[i].set_ylim(y_min, y_max)
      pylab.sca(axes[i])
      plt.scatter(X_train[:,0], X_train[:, 1], c=y_train, cmap=plt.cm.prism)
      ys = (-clf.intercept_[i] - xs * clf.coef_[i, 0]) / clf.coef_[i, 1]
      plt.plot(xs, ys, hold=True)
      plt.show()
  </code></pre>
  
  <p>The below error message appears when running.</p>
  
  <p><a href="https://i.stack.imgur.com/aw9dd.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aw9dd.jpg" alt="enter image description here"></a></p>