Plotly: How to add borders and sidelabels to subplots, and syncronize panning?

淺唱寂寞╮ 提交于 2020-05-25 05:01:51

问题


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:

  1. Borders on each of the subplots
  2. 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.
  3. 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")

回答1:


Here's a suggestion that should be very close to 100%, at least regarding what's actually possible at the moment:

1. Subplot borders: fig_update_xaxes(mirror=True)

2. You're already as close as you're going to get at the moment

3. Sidelabels: fig['layout']['xaxis']['title']='Label x-axis 1'

Plot:

Code:

#import plotly.offline as poff
#import plotly.tools as tls

from plotly.subplots import make_subplots
import plotly.graph_objects as go
import pandas as pd

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 = make_subplots(rows=2, cols=2, shared_xaxes=True, shared_yaxes=True,
                    #vertical_spacing=0.1,
                    #horizontal_spacing=0.05,
                    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')

fig.update_xaxes(showline=True, linewidth=1, linecolor='black', mirror=True)
fig.update_yaxes(showline=True, linewidth=1, linecolor='black', mirror=True)

# edit axis labels
fig['layout']['xaxis']['title']='Label x-axis 1'
fig['layout']['xaxis2']['title']='Label x-axis 2'

fig['layout']['xaxis3']['title']='Label x-axis 3'
fig['layout']['xaxis4']['title']='Label x-axis 4'

fig['layout']['yaxis']['title']='Label y-axis 1'
fig['layout']['yaxis2']['title']='Label y-axis 2'

fig['layout']['yaxis3']['title']='Label x-axis 3'
fig['layout']['yaxis4']['title']='Label x-axis 4'

fig.show()


来源:https://stackoverflow.com/questions/36147713/plotly-how-to-add-borders-and-sidelabels-to-subplots-and-syncronize-panning

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!