title: Trouble with Multiple Sankey Subplots in Plotly
body: <p>So I’m stuck trying to create a plot with multiple Sankey diagrams. Specifically, I keep getting an error that says <strong>"Invalid property specified for object of type plotly.graph_objs.Sankey: 'xaxis'"</strong>. This seems to be invoked when the script gets to the <strong>append_trace</strong> command. Here is a simple example code, which I run in a Jupyter notebook:</p>
  
  <pre><code>import plotly.tools as tools
  import plotly.offline as offline
  import plotly.graph_objs as go
  
  offline.init_notebook_mode(connected = True)
  
  trace1 = go.Sankey(
      node = dict(
          pad = 15,
          thickness = 20,
          line = dict(
              color = "black",
              width = 0.5
          ),
          label = ["Joe", "Molly", "Gavin", "Octavio", "Leslie", "Natasha"],
          color = ["blue", "red", "green", "yellow", "brown", "magenta"]
      ),
      link = dict(
          source = [0,1,3],
          target = [5,5,0],
          value = [6,8,3]
      )
  )
  
  trace2 = go.Sankey(
      node = dict(
          pad = 15,
          thickness = 20,
          line = dict(
              color = "black",
              width = 0.5
          ),
          label = ["Russia", "Gambia", "Sweden", "Bolivia", "Timor-Leste", "Kazakhstan", "Bhutan"],
          color = ["red", "black", "brown", "magenta", "yellow", "blue", "orange"]
      ),
      link = dict(
          source = [0,1,4,6],
          target = [7,7,7,3],
          value = [6,8,3,3]
      )
  )
  
  fig = tools.make_subplots(rows = 2, cols = 1)
  
  fig.append_trace(trace1, 1, 1)
  fig.append_trace(trace2, 2, 1)
  
  fig['layout'].update(
      title = "Basic Sankey Diagram with Two Subplots",
      font = dict(
        size = 10
      )
  )
  
  offline.iplot(fig)
  </code></pre>
  
  <p>When I run it, I get the following traceback:</p>
  
  <pre><code>---------------------------------------------------------------------------
  ValueError                                Traceback (most recent call last)
  &lt;ipython-input-4-dd6268edf7ab&gt; in &lt;module&gt;
       37 fig = tools.make_subplots(rows = 2, cols = 1)
       38 
  ---&gt; 39 fig.append_trace(trace1, 1, 1)
       40 fig.append_trace(trace2, 2, 1)
       41 
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in append_trace(self, trace, row, col)
     1222 """, DeprecationWarning)
     1223 
  -&gt; 1224         self.add_trace(trace=trace, row=row, col=col)
     1225 
     1226     def _set_trace_grid_position(self, trace, row, col):
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in add_trace(self, trace, row, col)
     1069         return self.add_traces(data=[trace],
     1070                                rows=[row] if row is not None else None,
  -&gt; 1071                                cols=[col] if col is not None else None
     1072                                )[0]
     1073 
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in add_traces(self, data, rows, cols)
     1152         if rows is not None:
     1153             for trace, row, col in zip(data, rows, cols):
  -&gt; 1154                 self._set_trace_grid_position(trace, row, col)
     1155 
     1156         # Make deep copy of trace data (Optimize later if needed)
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in _set_trace_grid_position(self, trace, row, col)
     1259                                 "An axis object for ({r},{c}) subplot "
     1260                                 "cell got deleted.".format(r=row, c=col))
  -&gt; 1261             trace['xaxis'] = ref[0]
     1262             trace['yaxis'] = ref[1]
     1263 
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in __setitem__(self, prop, value)
     2823             # ### Validate prop ###
     2824             if prop not in self._validators:
  -&gt; 2825                 self._raise_on_invalid_property_error(prop)
     2826 
     2827             # ### Get validator for this property ###
  
  /anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in _raise_on_invalid_property_error(self, *args)
     3006                                  full_obj_name=full_obj_name,
     3007                                  invalid_str=invalid_str,
  -&gt; 3008                                  prop_descriptions=self._prop_descriptions))
     3009 
     3010     def update(self, dict1=None, **kwargs):
  
  ValueError: Invalid property specified for object of type plotly.graph_objs.Sankey: 'xaxis'
  </code></pre>
  
  <p>I am NOT specifying <strong>xaxis</strong> in my traces, so where the hell is this coming from? Seems like this part may have something to do with it:</p>
  
  <pre><code>/anaconda3/lib/python3.7/site-packages/plotly/basedatatypes.py in _set_trace_grid_position(self, trace, row, col)
     1259                                 "An axis object for ({r},{c}) subplot "
     1260                                 "cell got deleted.".format(r=row, c=col))
  -&gt; 1261             trace['xaxis'] = ref[0]
     1262             trace['yaxis'] = ref[1]
     1263
  </code></pre>
  
  <p>Is this a bug? I have no idea.</p>
  
  <p>Somebody help!</p>