[运行下面的代码时,它显示了错误的图。
from pandas_datareader import data
from datetime import datetime as dt
from bokeh.plotting import figure, show, output_file
st=dt(2016,3,1)
end=dt(2016,3,10)
df=data.DataReader(name="GOOG",data_source="yahoo",start=st,end=end)
p=figure(x_axis_type="datetime",height=300,width=1000)
p.title.text="CandleStick graph"
p.rect(df.index[df.Close > df.Open],(df.Close+df.Open)/2,12*60*60*1000,abs(df.Close-df.Open))
show(p)
所有数据列的长度必须相同,但是您传递的是比其他短的一列:
df.index[df.Close > df.Open]
实际上是在运行代码,Bokeh甚至还告诉您了这一点:
BokehUserWarning: ColumnDataSource's columns must be of the same length.
Current lengths: ('height', 9), ('x', 5), ('y', 9)
您仅传递x
的5个坐标,而其他所有传递的9个坐标。所有参数都需要匹配。您可以:
根本不执行df.index
上的子设置
以相同的方式细分所有其他参数
((供以后参考:您应该总是在您的SO问题中包括任何错误或警告消息,例如上面的错误消息-并且,如@sjc所述,请详细描述问题,而不仅限于陈述“是错误的“)