Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Python 尝试使用jupyter笔记本中下拉菜单中的值绘制绘图图形_Python_Ipywidgets - Fatal编程技术网

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

Python 尝试使用jupyter笔记本中下拉菜单中的值绘制绘图图形,python,ipywidgets,Python,Ipywidgets,所以我有5家公司的股票价格。我试图做的是使用下拉菜单选择公司,并使用从下拉菜单中选择的公司数据创建一个线图。到目前为止,我掌握的代码如下: 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')

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

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绘制图表,但我是iPyWidget新手,因此任何和所有帮助都将不胜感激


提前感谢

在代码末尾,当下拉小部件的值发生变化时,您需要让它调用响应函数

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

Plotly有一个运行良好的小部件模式,我有时会使用它,与Voila一起用于仪表板和其他IPyWidget,包括BQplot。我更喜欢一些Plotly plot类型,也更喜欢BQplot的交互方式

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

将IPyWidget作为小部件导入 导入plotly.graph_objs作为go 数据=[go.Scatter] x=英特尔['date'], y=英特尔['close'], 模式='行', 名称='数据', 行=dict 颜色='rgb205,12,24', 宽度=4 ] plotlyFig=开始。Figuredata=数据 plotlyFig['layout']。更新高度=800, 宽度=800, 标题=, xaxis=dict title='x轴', titlefont=dict 家庭class='Arial', 尺寸=18, color='7f7f7f' , yaxis=dict title='y轴', titlefont=dict 家庭class='Arial', 尺寸=18, color='7f7f7f' PlotlyWidget=go.FigureWidgetplotlyFig这将创建一个PlotlyiPyWidget。 PlotlyWidgetData=PlotlyWidget.data[0] def响应更改: name=stocks.value 如果名称==“英特尔”: PlotlyWidgetData.x=英特尔['date'] PlotlyWidgetData.y=Intel['close'] elif名称=='Nvidia': PlotlyWidgetData.x=Nvidia['date'] PlotlyWidgetData.y=Nvidia['close'] elif name=='AMD': PlotlyWidgetData.x=AMD['date'] PlotlyWidgetData.y=AMD['close'] elif名称=='Gigabyte': PlotlyWidgetData.x=GB['date'] PlotlyWidgetData.y=Gigabyte['close'] elif名称==“Asus”: PlotlyWidgetData.x=Asus['date'] PlotlyWidgetData.y=Asus['close'] elif名称=='MSI': PlotlyWidgetData.x=MSI['date'] PlotlyWidgetData.y=MSI['close'] elif名称=='EVGA': PlotlyWidgetData.x=EVGA['date'] PlotlyWidgetData.y=EVGA['close'] stocks=widgets.下拉列表 description='Stocks:', 选项=[,'Intel','Nvidia','AMD','Gigabyte','Asus','MSI','EVGA'] stocks.observerresponse,type='change',name=['value'] 股票
谢谢你,伙计,但这似乎没用。如果你能编辑代码,那会好得多,因为反应太晚了。不管怎样,我试过了,但似乎不起作用。我得到了下拉菜单,但图形没有绘图。你能提供你的数据尝试或削减doen版本。对我来说,用你使用的任何格式的实际数据来调试它会更容易。我的尝试与原始文章中的代码相同。我直接从yahoo finance获取数据,并将其存储在数据帧中。然而,为了您的方便,我已经将所有的数据帧转换为csv文件并上传了它们,以便您查看。还想指出的是,在您提供的上述答案的情况下,即使最初的数字没有被绘制,即使它应该被绘制。我使用复制和粘贴来测试您的解决方案,而不做任何更改。谢谢:试试这个:stocks.observerresponse。这可能行得通。但是我不能测试它,因为我没有时间创建数据字典。如果您提供了一个使用Python中定义的示例数据的近似工作示例,我将为您介绍一下。我尝试过,但没有成功。我用数据字典更新了我原来的帖子。我已经上传了数据,所以您所要做的就是更改csv文件的路径:。谢谢