【问题标题】:How to show/hide subplots with checkboxes using plotly off-line如何使用 plotly 离线显示/隐藏带有复选框的子图
【发布时间】:2018-06-16 07:08:17
【问题描述】:

我正在使用 plotly 离线模式创建具有公共 x 轴的垂直堆叠子图(1 列和 10 行)。我希望可以选择使用复选框或下拉菜单来显示/隐藏子图。

以下是我正在使用的示例代码。基本上我需要在渲染后隐藏一些子图。例如,在 5 个子图中,我想隐藏 plot2 和 plot4。一旦隐藏,应该只显示 3 个子图。所以不要只是试图隐藏数据系列,因为那样仍然会保留子图空间。

import plotly.offline as po
import plotly.graph_objs as go
from plotly import tools

fig = tools.make_subplots(rows=5, cols=1, shared_xaxes=True,
                          subplot_titles=['plot1', 'plot2', 'plot3', 'plot4', 'plot5'])
xval = [i for i in range(10)]
for p in range(5):
    yval = [x**(p+1) for x in xval]
fig.append_trace(go.Scatter(mode='lines', x=xval, y=yval, 
                            name='y = x^{}'.format(p+1)), p+1, 1)

fig['layout'].update(title='Test', height=1000, width=1500, showlegend=True, margin=go.Margin(l=150))
po.plot(fig, filename='sample', auto_open=True)

【问题讨论】:

  • 您是否使用python(只是想确认)如果可能还提供一些示例代码?
  • 我正在使用 python。
  • 我已经更新了这个问题的更多细节,希望这能澄清我的问题。

标签: python plotly


【解决方案1】:

我不确定您为什么不只是使用legend 来切换痕迹的可见性。不管怎样,你去吧,我使用for loops and if conditions 来生成构成下拉列表的必要对象,研究代码并让我知道如果实施有任何问题!

import pandas as pd
import numpy as np
import plotly.offline as py_offline
import plotly.graph_objs as go
from plotly import tools
py_offline.init_notebook_mode()

trace = go.Scatter(
    x=[1, 2, 3],
    y=[4, 5, 6]
)

fig = tools.make_subplots(rows=10, cols=1)

for k in range(10):
    fig.append_trace(trace, k+1, 1)

updatemenus=list([
    dict(
        buttons=[],
        direction = 'down',
        pad = {'r': 10, 't': 10},
        showactive = True,
        x = 0,
        xanchor = 'left',
        y = 1.2,
        yanchor = 'top' 
    ),
])

lister = []
for k in range(11):
    lister.append(dict(
        args=['visible', [True for k in range(10)] if k == 0 else [True if (i+1) == k else False for i in range(10)]],
        label='Show Trace ' + str( 'All' if k == 0 else k),
        method='restyle'
    ))

updatemenus[0]['buttons'] = lister

fig['layout']['updatemenus'] = updatemenus


fig['layout'].update(title='subplots')
py_offline.iplot(fig, filename='simple-subplot')

【讨论】:

  • @Sudheer 这个答案对你有帮助吗?
  • 感谢您的回复。我基本上希望完全隐藏图表,而不仅仅是您提到的数据系列可以通过单击图例来完成。
  • @Sudheer 问题似乎另有说明,请根据具体要求更新您的问题
猜你喜欢
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
相关资源
最近更新 更多