The following graph is my attempt to use Plotly in Python (code at the very bottom) to do 2x2 plot.

I am trying to improve the graph but I can't seem to do the following:
- Borders on each of the subplots
- Synchronize panning and zooming across all the plots. Although I am using shared_xaxes and shared_yaxes, it only works for the row and column of the subplot. So if I pan around on the lower left graph, the upper right graph remains unmoved.
- Sidelabels to label the subplots. See for e.g.

Any help would be much appreciated. Below is my code so far.
import plotly.offline as poff
import plotly.tools as tls
x = list(range(10,20))
y = x
y1 = [10-i for i in x]
y2 = [abs(i-5) for i in x]
y3 = [abs(2*i- 5) for i in x]
fig = tls.make_subplots(rows=2, cols=2, shared_xaxes=True, shared_yaxes=True,
vertical_spacing=0.01,
horizontal_spacing=0.01, print_grid=True)
fig.append_trace(go.Scatter({'x':x, 'y':y, 'name':'A1'},), 1, 1)
fig.append_trace(go.Scatter({'x':x, 'y':y1, 'name':'B2'},), 2, 2)
fig.append_trace(go.Scatter({'x':x, 'y':y2, 'name':'A2'},), 2, 1)
fig.append_trace(go.Scatter({'x':x, 'y':y3, 'name':'B1'},), 1, 2)
fig['layout'].update(title='Multiple Subplots')
url = poff.plot(fig, filename="test23.html")
