所以我有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来绘制图表,但我是ipywidgets的新手,因此任何帮助都将不胜感激。
提前感谢
发布于 2019-04-18 18:10:26
在代码的最后,您需要让dropdown小部件在它的值发生变化时调用response函数。
stocks.observe(response, type='change', names=['value'])发布于 2019-04-21 20:51:14
Plotly有一个运行良好的窗口小部件模式,我有时会使用它,与Voila一起用于仪表板(https://github.com/QuantStack/voila)以及包括BQplot在内的其他ipywidget。(我更喜欢一些Plotly绘图类型,我更喜欢BQplot的interactively )。
这段代码还没有经过测试,但可能是这样的。
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'])
stockshttps://stackoverflow.com/questions/55732037
复制相似问题