我正在尝试通过Python中的散景来获得线条图。我是新的散景,我正试图应用悬停工具提示超过情节。图的X轴具有被转换成时期字符串的时间戳值。我在这里回顾了一些相同的问题,并试图使用我的情况下的变通方法,但它似乎不起作用。在图上,它给出了???
,时间应该显示在哪里。
对我的代码有什么建议吗?
时间戳的格式为2016-12-29 02:49:12
还有,有人能告诉我如何格式化x-axis
刻度以垂直显示吗?
p = figure(width=1100,height=300,tools='resize,pan,wheel_zoom,box_zoom,reset,previewsave,hover',logo=None)
p.title.text = "Time Series for Price in Euros"
p.grid.grid_line_alpha = 0
p.xaxis.axis_label = "Day"
p.yaxis.axis_label = "Euros"
p.ygrid.band_fill_color = "olive"
p.ygrid.band_fill_alpha = 0.1
p.circle(df['DateTime'],df['EuP'], size=4, legend='close',
color='darkgrey', alpha=0.2)
p.xaxis.formatter = DatetimeTickFormatter(formats=dict(
hours=["%d %B %Y"],
days=["%d %B %Y"],
months=["%d %B %Y"],
years=["%d %B %Y"],
))
source = ColumnDataSource(data=dict(time=[x.strftime("%Y-%m-%d %H:%M:%S")for x in df['DateTime']]))
hover = p.select(dict(type=HoverTool))
hover.tooltips = {"time":'@time', "y":"$y"}
hover.mode = 'mouse'
p.line(df['DateTime'],df['EuP'],legend='Price',color='navy',alpha=0.7)
3条答案
按热度按时间oewdyzsn1#
自从这个答案最初发布以来,新的工作已经进入散景,使事情变得更简单。日期时间字段可以通过悬停工具直接格式化为日期时间,方法是指定格式化程序,例如:
不再需要在数据源中预先设置日期字段的格式,如下所示。有关详细信息,请参阅设置工具提示字段格式
旧答案:
您的工具提示的问题是,您创建了一个带有日期字符串表示的源,但是
p.line()
调用并不知道它。所以你必须传入一个columndatasource,它有工具提示,x和y值。下面是你的代码的一个工作变体:
另外请注意,散景工具提示中缺少格式选项是一个悬而未决的问题。可能有一种更简单的方法,不必将日期字符串格式化为单独的列:
https://github.com/bokeh/bokeh/issues/1239
也有人能告诉我如何格式化x轴记号垂直显示?
我看起来很好,抱歉我帮不上忙。
希望这有帮助!
PS,如果你下次发布一个带有导入语句的工作脚本,以及一个模拟的数据框,以便可以测试,那就更好了。我花了一些时间才把这一切整理好。不过我正在学习散景,所以很好:)
zf2sa74q2#
抱歉没有评论,我没有足够的声誉。
@Alex接受的答案对我不起作用(Bokeh 2.0.1),因为它在格式化程序中缺少一个简单的@-符号。工作代码如下:
jljoyd4f3#
我为自己创造了一个属于自己的世界。
这是我如何初始化它