前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bokeh可视化笔记——x轴设为日期

Bokeh可视化笔记——x轴设为日期

作者头像
钱塘小甲子
发布2022-01-19 20:15:12
1.2K0
发布2022-01-19 20:15:12
举报
文章被收录于专栏:钱塘小甲子的博客

Bokeh是一个很好用的可视化工具库,画出来的图还是不错滴。比如想画历史上所有合约的螺纹-热卷价差。

整体质感还是不错的,比matplot好看,而且可以放大缩小,可以点击标签来选择是否显示。比如:

数据处理部分就不说了,这里应为我们是一个金融数据,x轴设置为日期。随便百度一下百度不到设置方法,所以找了一下官方的一些例子才实现。于是笔者实现之后来写个教程。

大致来看一下绘图的函数吧。

代码语言:javascript
复制
def plot_month_diff_line(plot_df, contract_df):
    def datetime(x):
        return np.array(x, dtype=np.datetime64)
    # x = list(range(max([len(plot_df[col].dropna()) for col in plot_df.columns])))
    x = date_list
    x = [item.date() for item in x]
    # 创建画布
    p = figure(x_axis_type="datetime",
       tools="pan,box_zoom,reset,save", y_range=[plot_df.min().min() * 1.05, plot_df.max().max() * 1.05], title="commodity monitor",
       x_axis_label='time', y_axis_label='value', plot_height=700,  plot_width=1400)
    colors = itertools.cycle(palet.Category20[20])
    for leg,color in zip(plot_df.columns, colors):
        p.line(datetime(x), plot_df[leg].tolist(), legend=leg, line_width=3, line_color=color)
    p.legend.label_text_font_size = "10pt"
    p.legend.click_policy="hide"
    return p

这里,我们的x是一个日期序列,笔者一开始以为只要将x的数据格式设置为时间格式就可以,后来发现还是太天真。这一点,需要bokeh改进一下。

在bokeh中,我们需要在设置绘图画布的时候,制定x轴类型为“datetime”

代码语言:javascript
复制
 p = figure(x_axis_type="datetime",
       tools="pan,box_zoom,reset,save", y_range=[plot_df.min().min() * 1.05, plot_df.max().max() * 1.05], title="commodity monitor",
       x_axis_label='time', y_axis_label='value', plot_height=700,  plot_width=1400)

然后传入的时间序列需要有个函数进行转换:

代码语言:javascript
复制
    def datetime(x):
        return np.array(x, dtype=np.datetime64)

当然,如果原来的x就是datetime64位的格式那就不需要。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档