Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jupyter notebook 如何在脱机模式下更新plotly plot(Jupyter笔记本电脑)_Jupyter Notebook_Plotly_Offline Mode - Fatal编程技术网

Jupyter notebook 如何在脱机模式下更新plotly plot(Jupyter笔记本电脑)

Jupyter notebook 如何在脱机模式下更新plotly plot(Jupyter笔记本电脑),jupyter-notebook,plotly,offline-mode,Jupyter Notebook,Plotly,Offline Mode,我想在Jupyter Notebook(脱机模式)中构建一个简单的plotly和ipywidgets接口,如果我想添加额外数据,我想知道如何更新plot。这是我的密码: import plotly from plotly.offline import iplot from plotly.graph_objs import graph_objs as go import ipywidgets as widgets from IPython.display import display plotl

我想在Jupyter Notebook(脱机模式)中构建一个简单的plotly和ipywidgets接口,如果我想添加额外数据,我想知道如何更新plot。这是我的密码:

import plotly
from plotly.offline import iplot
from plotly.graph_objs import graph_objs as go
import ipywidgets as widgets
from IPython.display import display

plotly.offline.init_notebook_mode(connected=True)

trace_high = go.Scatter(
                x=[1,2,3,4],
                y=[4,6,2,8],
                name = "High",
                line = dict(color = '#7F7F7F'),
                opacity = 0.8)


data = [trace_high]

def plot_extra_data(drop):
    if drop["new"] == "2":
        trace_low = go.Scatter(
                x=[1,2,3,4],
                y=[1,7,3,5],
                name = "Low",
                line = dict(color = 'green'),
                opacity = 0.8)
        data.append(trace_low)
        fig.update(data=data)

drop = widgets.Dropdown(
    options=['1', '2', '3'],
    value='1',
    description='Number:',
    disabled=False,
)

drop.observe(plot_extra_data, "value")

display(drop)
fig = dict(data=data)
iplot(fig)

非常感谢您的任何意见/建议

每个人似乎都对与离线图表的交互感到困惑,真是疯了

尽管如此,从财产转让中获益还是相当简单的(例如,尽管它现在部分被弃用,但请参见此)

下面的简单代码段示例在用户通过
下拉列表
小部件进行交互时更新一个
plotly.graph_objs.FigureWidget()
。事实上,包含图表的xaxis和yaxis数据的
pandas.DataFrame()
是沿着用户希望显示其折线图的
商品维度切片的

如果您使用的是
jupyterlab

import pandas as pd
import plotly.graph_objs as go
import ipywidgets as widgets

df = pd.DataFrame({'cmdty' : ['beans', 'beans', 'beans', 'corn', 'corn', 'corn'],
                'month' : [1, 2, 3, 1, 2, 3],
                'value' : [10.5, 3.5, 8.0, 5.0, 8.75, 5.75]})

items = df.cmdty.unique().tolist()

cmdty = widgets.Dropdown(options=items,
                    description='Commodity')

def response(change):
    c = cmdty.value
    df_tmp = df[df.cmdty == c]
    x0 = df_tmp['month'] # Useless here as x is equal for the 2 commodities
    x1 = df_tmp['value']
    fig.data[0].x = x0 # Useless here as x is equal for the 2 commodities
    fig.data[0].y = x1

fig = go.FigureWidget(data=[{'type' : 'scatter'}])

cmdty.observe(response, names='value')
display(widgets.VBox([cmdty, fig]))

在这种情况下,重新绘制图形更容易。您可以将绘制绘图的代码放在函数中,并使用
interact
:@byouness感谢您的建议,但interact的使用有一些限制,我正试图避免这些限制。@chemist您能列举一些限制吗?它将帮助我决定当前应用程序的最佳选择。如果需要将新数据附加到图形中,此代码将是什么样子。比方说,你从一个点开始,然后每隔一秒钟向图表中添加一个新点。你能不重新画图表就完成吗?实际上我有所有可用的数据。我只想以动画的方式显示它。我想知道是否有使用batch_animate选项的示例。两个键:1。使用
FigureWidget
代替
Figure
;2.使用
display
而不是
iplot
来显示图形。