Bokeh中数据的添加、修改和筛选 | Bokeh 小册子
本文主要介绍 在 bokeh 中 对 ColumnDataSource 类型数据中进行:
(1)添加新的数据 (2)修改更新已有数据 (3)筛选数据。
Table of Contents
-
1 添加新的数据
-
2 数据更新
-
2.1 更新单个数据
-
2.2 更新多个数据
-
-
3 筛选数据
-
3.1 Indexfilter
-
3.2 BooleanFilter
-
3.3 GroupFilter
-
本文的环境为
-
window 7 系统
-
python 3.6
-
Jupyter Notebook
-
bokeh 0.13.0
数据是进行数据可视化的必要基础, 前文介绍了 bokeh 中数据呈现的几种方式。
本文主要介绍 在 bokeh 中 对 ColumnDataSource 类型数据中进行:
(1)添加新的数据 (2)修改更新已有数据 (3)筛选数据。
首先加载相关Python库。
-
from bokeh.plotting import figure, output_notebook, show
-
from bokeh.layouts import gridplot
-
from bokeh.models import ColumnDataSource
-
import numpy as np
-
import pandas as pd
-
-
output_notebook()
1 添加新的数据
ColumnDataSource 通过 stream() 方法来添加新的数据
-
data1 = {'x_values': [1, 2, 9, 4, 5],
-
'y_values': [6, 7, 2, 3, 6]}
-
-
source = ColumnDataSource(data=data1)
-
-
p1 = figure(plot_width=300, plot_height=300, title= 'origin data')
-
p1.circle(x='x_values', y='y_values', source=source, size=20)
-
-
show(p1)
图示如下:
-
new_data = {'x_values': [6, 7, 2, 3, 6],
-
'y_values': [1, 2, 9, 4, 5]}
-
-
# 在已有数据基础上添加新的数据 (append)
-
source.stream(new_data)
-
-
p2 = figure(plot_width=300, plot_height=300,title= 'append data with stream')
-
p2.circle(x='x_values', y='y_values', source=source, size=20)
-
-
show(p2)
图示如下:
2 数据更新
用 patch 方法可以更新 ColumnDataSource 的数据。
-
data = {'x_column': [1, 2, 9, 4, 5, 8],
-
'y_column': [6, 7, 2, 3, 6, 2]}
-
-
df = pd.DataFrame(data=data)
-
-
df
如下:
-
source = ColumnDataSource(data=df)
-
-
p1 = figure(plot_width=300, plot_height=300, title= 'origin data')
-
p1.circle(x='x_column', y='y_column', source=source, size=20)
-
-
show(p1)
图示如下:
2.1 更新单个数据
-
# 更新单个数据
-
# {column:(index, new_value) }
-
source.patch({'x_column':[(0,15)]})
-
-
p2 = figure(plot_width=300, plot_height=300,title= 'revise single value with patch')
-
p2.circle(x='x_column', y='y_column', source=source, size=20)
-
-
show(p2)
图示如下:
2.2 更新多个数据
-
# 更新多个数据
-
# {column:(slice, new_values) }
-
-
s = slice(2,4)
-
source.patch({'x_column':[(s,[20,15])]})
-
-
p2 = figure(plot_width=300, plot_height=300,title= 'revise multiple values with patch')
-
p2.circle(x='x_column', y='y_column', source=source, size=20)
-
-
show(p2)
图示如下:
3 筛选数据
在Bokeh 中, ColumnDataSource (CDS) 提供了 CDSView 来对数据进行筛选
其一般用法如下:
from bokeh.models import ColumnDataSource, CDSView
source = ColumnDataSource(some_data)
view = CDSView(source=source, filters=[filter1, filter2])
其中 filters 包括 IndexFilter, BooleanFilter, GroupFilter 等
3.1 Indexfilter
根据数据的索引来筛选数据
-
from bokeh.plotting import figure
-
from bokeh.models import ColumnDataSource, CDSView, IndexFilter
-
from bokeh.layouts import gridplot
-
-
data = {'x_column': [1, 2, 9, 4, 5, 8],
-
'y_column': [6, 7, 2, 3, 6, 2]}
-
-
df = pd.DataFrame(data=data)
-
source = ColumnDataSource(data=df)
-
view = CDSView(source=source, filters=[IndexFilter([0,2,4])])
-
-
p1 = figure(plot_width=300, plot_height=300, title='origin state')
-
p1.circle(x='x_column', y='y_column', source=source, size=20)
-
-
p2 = figure(plot_width=300, plot_height=300, title='IndexFilter')
-
p2.circle(x='x_column', y='y_column', source=source, size=20, view=view)
-
-
grid=gridplot([p1,p2],ncols=2, plot_width=300,plot_height=300)
-
-
show(grid)
图示如下:
3.2 BooleanFilter
根据布尔值, True 或 False 来筛选数据
-
from bokeh.models import BooleanFilter
-
from bokeh.layouts import row
-
-
booleans = [True if y_val>4 else False for y_val in source.data['y_column']]
-
view_booleans = CDSView(source=source, filters=[BooleanFilter(booleans)])
-
-
p1 = figure(plot_width=300, plot_height=300,title='origin state')
-
p1.circle(x='x_column', y='y_column', source=source, size=20)
-
-
p2 = figure(plot_width=300, plot_height=300, title='BooleanFilter')
-
p2.circle(x='x_column', y='y_column', source=source, size=20, view=view_booleans)
-
-
grid=gridplot([p1,p2],ncols=2,plot_width=300,plot_height=300)
-
-
show(grid)
图示如下:
3.3 GroupFilter
使用 GroupFilter 可以筛选出包含特定类型的所有行数据。 GroupFilter 有两个参数, 即 Column_name 和 group, 也就是 列名 和 类别名称。
如下面的官方例子所述,如果想筛选 iris 数据中 特定类别的花,可以使用 GroupFilter 方法。
-
from bokeh.plotting import figure, show
-
from bokeh.layouts import gridplot
-
from bokeh.models import ColumnDataSource, CDSView, GroupFilter
-
-
from bokeh.sampledata.iris import flowers
-
-
# output_file("group_filter.html")
-
-
source = ColumnDataSource(flowers)
-
view1 = CDSView(source=source, filters=[GroupFilter(column_name='species', group='versicolor')])
-
-
plot_size_and_tools = {'plot_height': 300, 'plot_width': 300,
-
'tools':['box_select', 'reset', 'help']}
-
-
p1 = figure(title="Full data set", **plot_size_and_tools)
-
p1.circle(x='petal_length', y='petal_width', source=source, color='black')
-
-
p2 = figure(title="Setosa only", x_range=p1.x_range, y_range=p1.y_range, **plot_size_and_tools)
-
p2.circle(x='petal_length', y='petal_width', source=source, view=view1, color='red')
-
-
show(gridplot([[p1, p2]]))
图示如下:
当然,还有一些其他的筛选方法,有兴趣的同学可以自己挖掘下~~
原文发布时间为:2018-10-11
本文作者:
本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“ ”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
告诉你,Spring Boot 真是个牛逼货!
现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下。 Spring Boot 的背景 了解 Spring Boot 必须先说说 Spring 框架! 在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头老大。 用过 Spring 框架的都知道 Spring 能流行是因为它的两把利器:IOC 和 AOP,IOC 可以帮助我们管理对象的依赖关系,极大减少对象的耦合性,而 AOP 的切面编程功能可以更方面的使用动态代理来实现各种动态方法功能(如事务、缓存、日志等)。 而要集成 Spring 框架,必须要用到 XML 配置文件,或者注解式的 Java 代码配置。无论是使用 XML 或者代码配置方式,都需要对相关组件的配置有足够的了解,然后再编写大量冗长的配置代码。 然后又有多少开发人员能精通这些配置呢?如果我们只提供一些配置参数让框架能自动配置这些组件,那是不是 so easy? 基于简化 Sprin...
- 下一篇
Nginx rewrite参考
1,将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com permanent; rewrite ^/connect/(.*)1 permanent; 2,将connect.myweb.com 301跳转到www.myweb.com/connect/ if ($host = "connect.myweb.com"){ rewrite ^/(.*)1 permanent; } 3,myweb.com 跳转到www.myweb.com if ($host != 'www.myweb.com' ) { rewrite ^/(.*)1 permanent; } 4,www.myweb.com/category/123.html 跳转为 category/?cd=123 rewrite "/category/(.*).html1 last; 5,www.myweb.com/admin/ 下跳转为www.myweb.com/admin/index.php?s= if (!-e $...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境