Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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 博克的阴谋是空的_Python_Plot_Line_Bokeh - Fatal编程技术网

Python 博克的阴谋是空的

Python 博克的阴谋是空的,python,plot,line,bokeh,Python,Plot,Line,Bokeh,我正在尝试使用以下数据格式绘制绘图: Date Adj Close Volume Day_Perc_Change Name 0 2018-10-22 7468.629883 2.282400e+09 0.263123 NASDAQ 1 2018-10-23 7437.540039 2.735820e+09 -0.416272 NASDAQ 2 2018-10-24 7108.399902 2.935550e+09 -4.42539

我正在尝试使用以下数据格式绘制绘图:

    Date    Adj Close   Volume  Day_Perc_Change Name
0   2018-10-22  7468.629883 2.282400e+09    0.263123    NASDAQ
1   2018-10-23  7437.540039 2.735820e+09    -0.416272   NASDAQ
2   2018-10-24  7108.399902 2.935550e+09    -4.425390   NASDAQ
3   2018-10-25  7318.339844 2.741810e+09    2.953406    NASDAQ
4   2018-10-26  7167.209961 2.964780e+09    -2.065084   NASDAQ
计划是绘制每个日期的调整收盘价的折线图,并显示其余数据的悬停工具提示

我试着像这样策划:

s = figure(plot_height=600,
           plot_width=1000,
           title = "Adjacent Closing Prices",
          x_axis_label='Date',
           y_axis_label='Price')
     

    

s.line(source=hsc,
       x='Date',
       y='Adj Close')

output_notebook()
show(s)
hsc是恒生指数的columndatasource,但它返回一个空白图。
是否需要先将数据预处理为特定格式?

您可以尝试更改数据类型并设置线宽。以下是对我有效的方法:

df片段-

        Date    Adj Close        Volume Day_Perc_Change    Name
0 2018-10-22  7468.629883  2.282400e+09        0.263123  NASDAQ
1 2018-10-23  7437.540039  2.735820e+09       -0.416272  NASDAQ
2 2018-10-24  7108.399902  2.935550e+09       -4.425390  NASDAQ
3 2018-10-25  7318.339844  2.741810e+09        2.953406  NASDAQ
4 2018-10-26  7167.209961  2.964780e+09       -2.065084  NASDAQ


# Convert Date to datetime and Adj Close to float
df.loc[: , "Date"] = pd.to_datetime(df.loc[: , "Date"], infer_datetime_format = True)
df.loc[: , "Adj Close"] = df.loc[: , "Adj Close"].astype(float)
在创建地物之前加载Bokeh

output_notebook()
编辑:根据@aneroid下面的注释添加一些工具提示结果+一些格式调整

# Create HoverTool class object with appropriate formatting for the desired tooltip output.
# More in the Bokeh inspectors section: https://docs.bokeh.org/en/latest/docs/user_guide/tools.html#inspectors
ht = HoverTool(
    tooltips = [
        # Formatting similar to strftime().
        # Docs: https://docs.bokeh.org/en/latest/docs/reference/models/formatters.html#bokeh.models.formatters.DatetimeTickFormatter
        ("Date", "@Date{%Y-%m-%d}"),
        
        # Format to two decimal points.  We also have the Hong Kong dollar sign (HK$) at the start.
        ("Adj Close", "HK$@{Adj Close}{%0.2f}"),
    ],
    formatters = {
        "@Date": "datetime",
        "@{Adj Close}": "printf",
    }
)

# --- Add 'line_width' argument to 's.line()' and 'x_axis_type' argument for appropriate datetime formatting. --- #

s = figure(
    plot_height = 450,
    plot_width = 600,
    title = "Adjacent Closing Prices",
    x_axis_label = "Date",
    y_axis_label = "Price",
    x_axis_type = "datetime", # For x-axis formatting (obviously)
)

# Add your hovertools object here.
s.add_tools(ht)

s.line(source = df, x = "Date", y = "Adj Close", line_width = 2)

show(s)
Jupyter笔记本屏幕截图:


既然要转换整个列的类型,而且没有任何其他选择器,为什么不将
df[“Date”]=pd.转换为\u datetime(df[“Date”],推断\u datetime\u format=True)
?“Adj Close”也一样。谢谢,这解决了绘图问题,@aneroid的建议也返回了相同的结果。然而,悬停工具提示如何显示数据仍然存在问题,但我想这是另一个问题?@aneroid我相信这只是个人偏好,可能是因为我厌恶链式索引。:-)更多关于查看与复制的信息:@aneroid我更新了我的答案,如果您想查看,请将您的HoverTools建议包括在内。我对Bokeh还是个新手,所以任何建议都非常感谢!我想OP也想展示交易所(“纳斯达克”),所以在工具提示列表中添加
('Name','@Name')
。另外,很好地添加了格式化程序;我不认为日期需要它们,但我想它可能也会显示时间,如果不是格式的话。浮点数会显示额外的小数。顺便说一句,既然你已经粘贴了你的代码,你也不需要包括代码的截图;只要图表就行了。