7

我是 JupyterLab 的新手,正在努力学习。

当我尝试绘制图表时,它在 jupyter notebook 上运行良好,但在 jupyterlab 上没有显示结果。谁能帮我这个?

以下是以下代码:

import pandas as pd
import pandas_datareader.data as web
import time
# import matplotlib.pyplot as plt
import datetime as dt
import plotly.graph_objects as go
import numpy as np
from matplotlib import style
# from matplotlib.widgets import EllipseSelector
from alpha_vantage.timeseries import TimeSeries

以下是用于绘制的代码:

def candlestick(df):
    fig = go.Figure(data = [go.Candlestick(x = df["Date"], open = df["Open"], high = df["High"], low = df["Low"], close = df["Close"])])
    fig.show()

JupyterLab 结果: 链接到图像 (JupyterLab)

JupyterNotebook 结果: 链接到图像(Jupyter Notebook)

我已将 JupyterLab 和 Notebook 更新到最新版本。我不知道是什么导致 JupyterLab 停止显示该图。

感谢您阅读我的帖子。帮助将不胜感激。

笔记*

我没有包括数据读取部分(库存 OHLC 值)。它包含 API 密钥。给您带来不便,我深表歉意。另外,这是我关于堆栈溢出的第二篇文章。如果这不是一篇写得很好的帖子,我很抱歉。如果可能的话,我会努力付出更多的努力。再次感谢您的帮助。

4

2 回答 2

4

TL;博士:

运行以下命令,然后重新启动您的 jupyter 实验室

jupyter labextension install @jupyterlab/plotly-extension

开始实验室:

jupyter lab

使用以下代码进行测试:

import plotly.graph_objects as go
from alpha_vantage.timeseries import TimeSeries

def candlestick(df):
    fig = go.Figure(data = [go.Candlestick(x = df.index, open = df["1. open"], high = df["2. high"], low = df["3. low"], close = df["4. close"])])
    fig.show()

# preferable to save your key as an environment variable....
key = # key here

ts = TimeSeries(key = key, output_format = "pandas")
data_av_hist, meta_data_av_hist = ts.get_daily('AAPL')

candlestick(data_av_hist)

更长的解释:

由于此问题与 plotly 而不是 matplotlib 相关,因此您不必使用以下“内联魔法”:

%matplotlib inline

每个扩展都必须安装到 jupyter 实验室,您可以查看列表:

jupyter labextension list

有关另一个扩展的更详细说明,请参阅相关问题: jupyterlab interactive plot

于 2019-10-16T17:13:17.980 回答
0

帕特里克柯林斯已经给出了正确答案

但是,扩展可能不支持当前的 JupyterLab,并且由于各种原因可能无法更新 JupyterLab:

ValueError:扩展“@jupyterlab/plotly-extension”尚不支持当前版本的 JupyterLab。

在这种情况下,一个快速的解决方法是保存图像并再次显示它:

from IPython.display import Image

fig.write_image("image.png")
Image(filename='image.png')

要使write_image()Plotly 的方法起作用,kaleido必须安装:

pip install -U kaleido

这是测试此解决方法的完整示例(最初来自Plotly ):

import os
import pandas as pd
import plotly.express as px

from IPython.display import Image

df = pd.DataFrame([
    dict(Task="Job A", Start='2009-01-01', Finish='2009-02-28', Resource="Alex"),
    dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15', Resource="Alex"),
    dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30', Resource="Max")
])

fig = px.timeline(df, x_start="Start", x_end="Finish", y="Resource", color="Resource")

if not os.path.exists("images"):
    os.mkdir("images")

fig.write_image("images/fig1.png")
Image(filename='images/fig1.png') 
于 2021-12-07T09:44:02.583 回答