ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – 无法使用日期时间x轴在Bokeh中绘制热图

2019-07-11 00:55:37  阅读:240  来源: 互联网

标签:python bokeh


我正在尝试绘制以下简单的热图:

data = {
    'value': [1, 2, 3, 4, 5, 6],
    'x': [datetime(2016, 10, 25, 0, 0),
          datetime(2016, 10, 25, 8, 0),
          datetime(2016, 10, 25, 16, 0),
          datetime(2016, 10, 25, 0, 0),
          datetime(2016, 10, 25, 8, 0),
          datetime(2016, 10, 25, 16, 0)],
    'y': ['param1', 'param1', 'param1', 'param2', 'param2', 'param2']
}
hm = HeatMap(data, x='x', y='y', values='value', stat=None)
output_file('heatmap.html')
show(hm)

不幸的是它没有正确呈现:

enter image description here

我试过设置x_range但似乎没什么用.

我已经设法使用以下代码:

d1 = data['x'][0]
d2 = data['x'][-1]

p = figure(
    x_axis_type="datetime", x_range=(d1, d2), y_range=data['y'],
    tools='xpan, xwheel_zoom, reset, save, resize,'
)

p.rect(
    source=ColumnDataSource(data), x='x', y='y', width=12000000, height=1,
)

但是,当我尝试使用缩放工具时,我在控制台中收到以下错误:

Uncaught Error: Number property 'start' given invalid value: 
Uncaught TypeError: Cannot read property 'indexOf' of null

我使用的是Bokeh 0.12.3.

解决方法:

包括HeatMap在内的bokeh.charts已于2017年弃用并删除.您应该使用稳定且受支持的bokeh.plotting API.有了上面的数据,一个完整的例子:

from datetime import datetime

from bokeh.plotting import figure, show
from bokeh.transform import linear_cmap

data = {
    'value': [1, 2, 3, 4, 5, 6],
    'x': [datetime(2016, 10, 25, 0, 0),
          datetime(2016, 10, 25, 8, 0),
          datetime(2016, 10, 25, 16, 0),
          datetime(2016, 10, 25, 0, 0),
          datetime(2016, 10, 25, 8, 0),
          datetime(2016, 10, 25, 16, 0)],
    'y': ['param1', 'param1', 'param1', 'param2', 'param2', 'param2']
}

p = figure(x_axis_type='datetime', y_range=('param1', 'param2'))

EIGHT_HOURS = 8*60*60*1000

p.rect(x='x', y='y', width=EIGHT_HOURS, height=1, line_color="white",
       fill_color=linear_cmap('value', 'Spectral6', 1, 6), source=data)

show(p)

enter image description here

标签:python,bokeh
来源: https://codeday.me/bug/20190711/1429455.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有