1 页上的多个情节情节,没有子情节

Posted

技术标签:

【中文标题】1 页上的多个情节情节,没有子情节【英文标题】:Multiple plotly plots on 1 page without subplot 【发布时间】:2018-03-30 23:58:53 【问题描述】:

我想在不使用 tools.make_subplots 方法的情况下在 1 个 html 页面上绘制多个绘图。 (我不想使用它,因为我发现它不容易阅读,并且我希望在每个子图面板中都有一个独特的图例和布局)。

我想定义 2 个具有自己独特布局的图形,并在页面上任意排列它们。我想我知道如何使用 html.Div 对象使用破折号来做到这一点,但我想知道是否有一种简单的方法可以只使用 plotly 来做到这一点?

【问题讨论】:

这些听起来有点令人困惑。如果要显示两个图表,请使用两个单独的 dcc.Graph()。您可以将它们放在自己的 html.Div 框中,但也不要这样做。如果你这样做,在屏幕上移动它们可能会更容易。如果您想确保它们具有实时更新而不是同时提供它们和“ID”元素,例如 dcc.Graph(id='chart1')。然后在回叫中您可以直接引用它。也许再定义一点或提供一个例子? 【参考方案1】:

我遇到了同样的问题,并按照此处发布的解决方案进行操作: Plotly: Plot multiple figures as subplots 来自 Esostack

但是,当我将多个图形的 html 转储到一个文本文件中时,我发现添加的每个图形的文件大小增加了 5MB。其中 99.9% 是由 plotly 添加的 java 脚本内容引起的,以使绘图具有交互性。幸运的是,他们还实现了一个参数来指定是否要包含 js。因此,您只需要在第一个数字中包含它,其余部分则跳过它,就像在以下函数中所做的那样。希望对您有所帮助:

def figures_to_html(figs, filename):
    '''Saves a list of plotly figures in an html file.

    Parameters
    ----------
    figs : list[plotly.graph_objects.Figure]
        List of plotly figures to be saved.

    filename : str
        File name to save in.

    '''
    import plotly.offline as pyo

    dashboard = open(filename, 'w')
    dashboard.write("<html><head></head><body>" + "\n")

    add_js = True
    for fig in figs:

        inner_html = pyo.plot(
            fig, include_plotlyjs=add_js, output_type='div'
        )

        dashboard.write(inner_html)
        add_js = False

    dashboard.write("</body></html>" + "\n")

【讨论】:

【参考方案2】:

所以,总而言之,我还没有找到一种方法来纯粹用 plotly 来做到这一点。以下是我使用 Dash 执行此操作的代码,它运行良好:

第 1 步:绘制一些情节图

import plotly.offline as pyo
import plotly.graph_objs as go
import plotly as py
fig1 = go.Scatter(y=[1,2,3])
fig2 = go.Scatter(y=[3,2,1])
plots = [fig1, fig2]

第 2 步:制作破折号 Div 对象:

app = dash.Dash()
layout = html.Div(
        [html.Div(plots[i]) for i in range(len(plots))],
        style = 'margin-right': '0px'
    )

第 3 步:运行破折号

app.layout = layout
app.run_server(port=8052)

【讨论】:

你从哪里得到变量 col_style?我得出了相同的结论,写起来更简洁,绘制的线条更少,但我希望它们在 y 轴上进行相同的缩放。并且动态地响应回调、数据选择等。你找到方法了吗? 得到一个错误“'col_style'未定义”我可以知道为什么

以上是关于1 页上的多个情节情节,没有子情节的主要内容,如果未能解决你的问题,请参考以下文章

将多个情节图下载到 PDF Shiny

情节:具有“链接”交互性的多个情节

如何将情节提要中的多个按钮连接到单个动作?

个别情节有效,但一旦添加子情节,啥都没有出现[重复]

个别情节有效,但一旦添加子情节,啥都没有出现[重复]

是否有可能实现与多个分类轴的Shiny情节交互?