首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用jupyter笔记本中下拉菜单中的值绘制绘图

尝试使用jupyter笔记本中下拉菜单中的值绘制绘图
EN

Stack Overflow用户
提问于 2019-04-18 00:17:13
回答 2查看 1.1K关注 0票数 0

所以我有5家公司的股票价格。我正在尝试做的是使用下拉菜单选择公司,并使用从下拉菜单中选择的公司的数据创建线状图。到目前为止,我拥有的代码如下:

代码语言:javascript
复制
import pandas as pd

intel = pd.read_csv(r'C:\Users\PC\Desktop\INTEL.csv')
nvidia = pd.read_csv(r'C:\Users\PC\Desktop\NVIDIA.csv')
amd = pd.read_csv(r'C:\Users\PC\Desktop\AMD.csv')
gigabyte = pd.read_csv(r'C:\Users\PC\Desktop\GIGABYTE.csv')
msi= pd.read_csv(r'C:\Users\PC\Desktop\MSI.csv')


stocks= widgets.Dropdown(
description='Stocks:   ',
options=['','Intel','Nvidia','AMD','Gigabyte','MSI']
)

name = stock.value


def response(name):
if name=='Intel' :
    Intel_chart = go.Line(x=Intel['Date'],y=Intel['Close'])
    Intel_data = [Intel_chart]
    iplot(Intel_data)

elif name=='Nvidia' :
    Nvidia_chart = go.Line(x=Nvidia['Date'],y=Nvidia['Close'])
    Nvidia_data = [Nvidia_chart]
    iplot(Nvidia_data)

elif name=='AMD' :
    AMD_chart = go.Line(x=AMD['Date'],y=AMD['Close'])
    AMD_data = [AMD_chart]
    iplot(AMD_data)

elif name=='Gigabyte' :
    Gigabyte_chart = go.Line(x=Gigabyte['Date'],y=Gigabyte['Close'])
    Gigabyte_data = [Gigabyte_chart]
    iplot(Gigabyte_data)

elif name=='MSI' :
    MSI_chart = go.Line(x=MSI['Date'],y=MSI['Close'])
    MSI_data = [MSI_chart]
    iplot(MSI_data)

但是,当我从下拉菜单中选择a值时,绘图没有显示出来。我做错了什么?我以前使用过Plotly来绘制图表,但我是ipywidgets的新手,因此任何帮助都将不胜感激。

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2019-04-18 18:10:26

在代码的最后,您需要让dropdown小部件在它的值发生变化时调用response函数。

代码语言:javascript
复制
stocks.observe(response, type='change', names=['value'])
票数 1
EN

Stack Overflow用户

发布于 2019-04-21 20:51:14

Plotly有一个运行良好的窗口小部件模式,我有时会使用它,与Voila一起用于仪表板(https://github.com/QuantStack/voila)以及包括BQplot在内的其他ipywidget。(我更喜欢一些Plotly绘图类型,我更喜欢BQplot的interactively )。

这段代码还没有经过测试,但可能是这样的。

代码语言:javascript
复制
import ipywidgets as widgets
import plotly.graph_objs as go


data = [go.Scatter(
    x = Intel['date'],
    y = Intel['close'],
    mode = 'lines',
    name = 'Data',
    line = dict(
        color = ('rgb(205, 12, 24)'),
        width = 4)
)]

plotlyFig = go.Figure(data=data)
plotlyFig['layout'].update(height=800,
                           width=800,
                           title='',
                           xaxis=dict(
                               title='x Axis',
                               titlefont=dict(
                                   family='Arial',
                                   size=18,
                                   color='#7f7f7f'
                               )
                           ),
                           yaxis=dict(
                               title='y Axis',
                               titlefont=dict(
                                   family='Arial',
                                   size=18,
                                   color='#7f7f7f'
                               )
                           )
                           )

PlotlyWidget = go.FigureWidget(plotlyFig)   # This creates a Plotly Ipywidget.
PlotlyWidgetData = PlotlyWidget.data[0]        

def response(change):
    name = stocks.value

    if name=='Intel' :
        PlotlyWidgetData.x = Intel['date']
        PlotlyWidgetData.y = Intel['close']
    elif name=='Nvidia' :
        PlotlyWidgetData.x = Nvidia['date']
        PlotlyWidgetData.y = Nvidia['close']
    elif name=='AMD' :
        PlotlyWidgetData.x = AMD['date']
        PlotlyWidgetData.y = AMD['close']
    elif name=='Gigabyte' :
        PlotlyWidgetData.x = Gigabyte['date']
        PlotlyWidgetData.y = Gigabyte['close']
    elif name=='Asus' :
        PlotlyWidgetData.x = Asus['date']
        PlotlyWidgetData.y = Asus['close']
    elif name=='MSI' :
        PlotlyWidgetData.x = MSI['date']
        PlotlyWidgetData.y = MSI['close']
    elif name=='EVGA' :
        PlotlyWidgetData.x = EVGA['date']
        PlotlyWidgetData.y = EVGA['close']  

stocks = widgets.Dropdown(
    description='Stocks:   ',
    options=['','Intel','Nvidia','AMD','Gigabyte','Asus','MSI','EVGA'])

stocks.observe(response, type='change', names=['value'])

stocks
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55732037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档