如何使用 plotly 定义子图的布局
how to define the layout for subplot using plotly
我使用下面的代码使用 plotly 包创建了一行两列的子图。但是两个 x 轴重叠了(见附件截图)。第一个地块的轴覆盖了两个地块。如何解决这个问题?我没有从 plotly 网站上看到一个很好的例子。另外如何删除图例?
import plotly
import plotly.graph_objs as go
def plot(plot_dic, width=1000, **kwargs):
kwargs['output_type'] = 'div'
plot_str = plotly.offline.plot(plot_dic, **kwargs)
print('%%angular <div style=" width: %spx"> %s </div>' % ( width, plot_str))
# Create a trace
trace0 = go.Scatter(
x = np.arange(100)+1,
y = np.round(df[df['']=='value'].iloc[:,1:]*100, 2).values.reshape(100),
mode = 'lines+markers',
)
trace1 = go.Scatter(
x = np.arange(100)+1,
y = np.cumsum(np.round(df[df['']=='value'].iloc[:,1:]*100, 2).values).reshape(100),
mode = 'lines+markers',
)
fig = plotly.tools.make_subplots(rows=1, cols=2, subplot_titles=('Variance', 'Cumulative Variance')
# ,shared_xaxes=True, shared_yaxes=True
)
fig['layout'].update(height=500, width=800, title="Plot title"
,xaxis=dict(range = [1, 400],
dtick = 40,
showticklabels=True,
tickfont=dict(family='Arial, sans-serif', size=14, color='black'),
exponentformat='e',
showexponent='all')
,xaxis1=dict(range = [1, 400],
dtick = 40,
showticklabels=True,
tickfont=dict(family='Arial, sans-serif', size=14, color='black'),
exponentformat='e',
showexponent='all')
)
fig.append_trace(trace0, 1, 1)
fig.append_trace(trace1, 1, 2)
plot(fig, width=600, show_link=False)
另一种创建子图但避免重叠的方法 x-axis 是将子图改为 2 行 1 列。
fig = plotly.tools.make_subplots(rows=2, cols=1, subplot_titles=('Variance', 'Cumulative Variance')
# ,shared_xaxes=True, shared_yaxes=True)
我使用下面的代码使用 plotly 包创建了一行两列的子图。但是两个 x 轴重叠了(见附件截图)。第一个地块的轴覆盖了两个地块。如何解决这个问题?我没有从 plotly 网站上看到一个很好的例子。另外如何删除图例?
import plotly
import plotly.graph_objs as go
def plot(plot_dic, width=1000, **kwargs):
kwargs['output_type'] = 'div'
plot_str = plotly.offline.plot(plot_dic, **kwargs)
print('%%angular <div style=" width: %spx"> %s </div>' % ( width, plot_str))
# Create a trace
trace0 = go.Scatter(
x = np.arange(100)+1,
y = np.round(df[df['']=='value'].iloc[:,1:]*100, 2).values.reshape(100),
mode = 'lines+markers',
)
trace1 = go.Scatter(
x = np.arange(100)+1,
y = np.cumsum(np.round(df[df['']=='value'].iloc[:,1:]*100, 2).values).reshape(100),
mode = 'lines+markers',
)
fig = plotly.tools.make_subplots(rows=1, cols=2, subplot_titles=('Variance', 'Cumulative Variance')
# ,shared_xaxes=True, shared_yaxes=True
)
fig['layout'].update(height=500, width=800, title="Plot title"
,xaxis=dict(range = [1, 400],
dtick = 40,
showticklabels=True,
tickfont=dict(family='Arial, sans-serif', size=14, color='black'),
exponentformat='e',
showexponent='all')
,xaxis1=dict(range = [1, 400],
dtick = 40,
showticklabels=True,
tickfont=dict(family='Arial, sans-serif', size=14, color='black'),
exponentformat='e',
showexponent='all')
)
fig.append_trace(trace0, 1, 1)
fig.append_trace(trace1, 1, 2)
plot(fig, width=600, show_link=False)
另一种创建子图但避免重叠的方法 x-axis 是将子图改为 2 行 1 列。
fig = plotly.tools.make_subplots(rows=2, cols=1, subplot_titles=('Variance', 'Cumulative Variance')
# ,shared_xaxes=True, shared_yaxes=True)