如何解决散景:X轴日期格式和烛台图悬停日期问题
我是Stackoverflow的新手,我正在尝试使用python中的bokeh构建烛台图表。我了解bokeh文档中有一个示例代码。我试图使用示例代码并重建我的图表。为了简单起见,我在下面的代码中粘贴了任意数据。
我有以下问题:
- 我们如何将图形设置为在x尺度上具有YYYY-MM-DD
- 有人可以解释W公式吗?我知道我们将以毫秒为单位获得一半的时间。但是为什么呢?
- 执行代码时,十字星图不会显示y轴的悬停日期(即,打开和关闭的时间相同)。 (这可能是没有vbar的bcos)但是我们如何克服它?
感谢有人可以提供帮助:) enter image description here 我的代码如下:
import pandas as pd
# intialise data of lists.
data = {'Date':['2020-10-10','2020-10-09','2020-10-08','2020-10-07','2020-10-06','2020-10-05','2020-10-04','2020-10-03'],'open':[20,21,19,18,30,10,15,18 ],'high':[25,28,24,20,40,'low':[18,12,'close':[32,8,20 ] }
# Create DataFrame
df = pd.DataFrame(data)
df['Date2'] = pd.to_datetime(df['Date'],errors='coerce')
##graph below
from math import pi
from bokeh.plotting import figure,output_file,show
from bokeh.models import ColumnDataSource,NumeralTickFormatter,HoverTool,DaysTicker,DatetimeTickFormatter
inc = df.close > df.open
dec = df.open > df.close
w = 12*60*60*1000 # half day in ms
TOOLS = "pan,wheel_zoom,Box_zoom,reset,save"
p = figure(x_axis_type="datetime",tools=TOOLS )
# 1 Pls help how do we code YYYY-MM-DD on the x-scale ?
p.xaxis.formatter=DatetimeTickFormatter(months = ['%m/%Y','%b %Y'],years = ['%Y'])
p.xaxis.major_label_orientation = pi/4
p.grid.grid_line_alpha=0.8
# 2 Pls help on explaining the w
p.segment(df.Date2,df.high,df.Date2,df.low,color="black")
p.vbar(df.Date2[inc],w,df.open[inc],df.close[inc],fill_color="#D5E1DD",line_color="black")
p.vbar(df.Date2[dec],df.open[dec],df.close[dec],fill_color="#F2583E",line_color="black")
# 3 Pls help on the Hover tool,why single line do not have date displayed,how to we overcome it?
hover_tool = HoverTool(tooltips=[('Date',"@x{%Y-%m-%d}"),('Close','$y')],formatters={"@x": 'datetime'},)
p.add_tools(hover_tool)
show(p) # open a browser
解决方法
- 将
days=['%Y-%m-%d']
添加到DatetimeTickFormatter
构造函数中。所有格式均已记录在here 中
- 蜡烛在数据中相隔一天。将其宽度设置为半天只会在它们之间创建一些空间
- 该代码分别为每个渲染器创建隐式数据源。这些隐式数据源中的列以渲染器中的参数命名。
vbar
具有x
参数,因此其数据源具有该列。但是segment
有x0
和x1
,因此数据源没有x
列,并且悬停工具也不知道从何处获取数据。@x
字段。 理想情况下,您应该自己创建带有所需列的数据源,并将其与列名一起提供给渲染器。本文档部分提供了更多示例的详细信息:https://docs.bokeh.org/en/latest/docs/user_guide/data.html
一个小注释-您将$y
显示为Close
,但这是不正确的。它只是一个坐标,而不是实际的“关闭”值。当您开始使用数据源时,将能够指定正确的列名称。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。