ToolBar工具栏设置

① 位置设置
② 移动、放大缩小、存储、刷新
③ 选择
④ 提示框、十字线

1. 位置设置

  1. import numpy as np
  2. import pandas as pd
  3. import matplotlib.pyplot as plt
  4. % matplotlib inline
  5.  
  6. import warnings
  7. warnings.filterwarnings('ignore')
  8. # 不发出警告
  9.  
  10. from bokeh.io import output_notebook
  11. output_notebook()
  12. # 导入notebook绘图模块
  13.  
  14. from bokeh.plotting import figure,show
  15. from bokeh.models import ColumnDataSource
  16. # 导入图表绘制、图标展示模块
  17. # 导入ColumnDataSource模块

  1. # 工具栏 tools
  2. # (1)设置位置
  3.  
  4. p = figure(plot_width=300, plot_height=300,
  5. toolbar_location="above")
  6. # 工具栏位置:"above","below","left","right"
  7.  
  8. p.circle(np.random.randn(100),np.random.randn(100))
  9. show(p)

  1. # 工具栏 tools
  2. # (1)设置位置
  3.  
  4. p = figure(plot_width=300, plot_height=300,
  5. toolbar_location="below",
  6. toolbar_sticky=False)
  7. # 工具栏位置设置为"below"时,可增加toolbar_sticky参数使得toolsbar不被遮挡
  8. p.circle(np.random.randn(100),np.random.randn(100))
  9. show(p)

2. 移动、放大缩小、存储、刷新

  1. # 工具栏 tools
  2. # (2)移动、放大缩小、存储、刷新
  3.  
  4. TOOLS = '''
  5. pan, xpan, ypan,
  6. box_zoom,
  7. wheel_zoom, xwheel_zoom, ywheel_zoom,
  8. zoom_in, xzoom_in, yzoom_in,
  9. zoom_out, xzoom_out, yzoom_out,
  10. save,reset
  11. '''
  12. #pan是直接移动;xpan和ypan分别是横轴、竖轴移动;box_zoom是矩形框放大,wheel_zoom滚轮缩放:直接缩放、X轴缩放、Y轴缩放;通过鼠标点击缩放zoom_in
  13. p = figure(plot_width=800, plot_height=400,toolbar_location="above",
  14. tools = TOOLS)
  15. # 添加toolbar
  16. # 这里tools = '' 则不显示toolbar
  17.  
  18. p.circle(np.random.randn(500),np.random.randn(500))
  19. show(p)

3. 选择

  1. # 工具栏 tools
  2. # (3)选择
  3.  
  4. TOOLS = '''
  5. box_select,lasso_select,
  6. reset
  7. '''
  8. #画多边形和矩形
  9. p = figure(plot_width=800, plot_height=400,toolbar_location="above",
  10. tools = TOOLS)
  11. # 添加toolbar
  12.  
  13. p.circle(np.random.randn(500),np.random.randn(500))
  14. show(p)

  1. #联动
  2. from bokeh.layouts import gridplot
  3.  
  4. TOOLS = '''
  5. box_select,lasso_select,
  6. reset
  7. '''
  8. df = pd.DataFrame(np.random.randn(500,2), columns = ['A', 'B'])
  9. source = ColumnDataSource(data=df)
  10.  
  11. p1 = figure(plot_width=400, plot_height=400,toolbar_location="above",tools = TOOLS)
  12. p2 = figure(plot_width=400, plot_height=400,toolbar_location="above",tools = TOOLS)
  13.  
  14. p1.circle(x='index', y='A',source=source)
  15. p2.line(x='index', y='B',source=source)
  16. s = gridplot([[p1, p2]])
  17. show(s)

4. 提示框、十字线

  1. # 工具栏 tools
  2. # (4)提示框、十字线
  3.  
  4. from bokeh.models import HoverTool
  5. # 用于设置显示标签内容
  6.  
  7. df = pd.DataFrame({'A':np.random.randn(500)*100,
  8. 'B':np.random.randn(500)*100,
  9. 'type':np.random.choice(['pooh', 'rabbit', 'piglet', 'Christopher'],500),
  10. 'color':np.random.choice(['red', 'yellow', 'blue', 'green'],500)})
  11. df.index.name = 'index'
  12. source = ColumnDataSource(df)
  13. print(df.head())
  14. # 创建数据 → 包含四个标签
  15.  
  16. p1 = figure(plot_width=800, plot_height=400,toolbar_location="above",
  17. tools=['hover,box_select,reset,wheel_zoom,pan,crosshair']) # 注意这里书写方式; hover它的作用是只是会显示出点的每个标签;crossshair是显示十字叉
  18. # 如果不设置标签,就只写hover,例如 tools='hover,box_select,reset,wheel_zoom,pan,crosshair'
  19. p1.circle(x = 'A',y = 'B',source = source,size = 10,alpha = 0.3, color = 'color')
  20. show(p1)

  1. from bokeh.models import HoverTool
  2. # 用于设置显示标签内容
  3.  
  4. df = pd.DataFrame({'A':np.random.randn(500)*100,
  5. 'B':np.random.randn(500)*100,
  6. 'type':np.random.choice(['pooh', 'rabbit', 'piglet', 'Christopher'],500),
  7. 'color':np.random.choice(['red', 'yellow', 'blue', 'green'],500)})
  8. df.index.name = 'index'
  9. source = ColumnDataSource(df)
  10. print(df.head())
  11. # 创建数据 → 包含四个标签
  12.  
  13. hover = HoverTool(tooltips=[
  14. ("index", "$index"),
  15. ("(x,y)", "($x, $y)"),
  16. ("A", "@A"),
  17. ("B", "@B"),
  18. ("type", "@type"),
  19. ("color", "@color"),
  20. ])
  21. # 设置标签显示内容
  22. # $index:自动计算 → 数据index
  23. # $x:自动计算 → 数据x值
  24. # $y:自动计算 → 数据y值
  25. # @A:显示ColumnDataSource中对应字段值
  26.  
  27. p1 = figure(plot_width=800, plot_height=400,toolbar_location="above",
  28. tools=[hover,'box_select,reset,wheel_zoom,pan,crosshair']) # 注意这里书写方式; hover它的作用是只是会显示出点的每个标签;crossshair是显示十字叉
  29. # 如果不设置标签,就只写hover,例如 tools='hover,box_select,reset,wheel_zoom,pan,crosshair'
  30. p1.circle(x = 'A',y = 'B',source = source,size = 10,alpha = 0.3, color = 'color')
  31. show(p1)
  32.  
  33. p2 = figure(plot_width=800, plot_height=400,toolbar_location="above",
  34. tools=[hover,'box_select,reset,wheel_zoom,pan'])
  35. p2.vbar(x = 'index', width=1, top='A',source = source)
  36. show(p2)
  37. print(hover) #就是一个生成器

  1. HoverTool(id='3b80258a-2940-4c8a-af3e-9a3905cb7c09', ...)

5. 筛选数据

隐藏

  1. # 1、筛选数据 - 隐藏
  2. # legend.click_policy
  3.  
  4. from bokeh.palettes import Spectral4
  5. # 导入颜色模块
  6.  
  7. df = pd.DataFrame({'A':np.random.randn(500).cumsum(),
  8. 'B':np.random.randn(500).cumsum(),
  9. 'C':np.random.randn(500).cumsum(),
  10. 'D':np.random.randn(500).cumsum()},
  11. index = pd.date_range('',freq = 'D',periods=500))
  12. # 创建数据
  13.  
  14. p = figure(plot_width=800, plot_height=400, x_axis_type="datetime")
  15. p.title.text = '点击图例来隐藏数据'
  16.  
  17. for col,color in zip(df.columns.tolist(),Spectral4):
  18. p.line(df.index,df[col],line_width=2, color=color, alpha=0.8,legend = col)
  19.  
  20. p.legend.location = "top_left"
  21. p.legend.click_policy="hide"
  22. # 设置图例,点击隐藏
  23.  
  24. show(p)

消隐

  1. # 1、筛选数据 - 消隐
  2. # legend.click_policy
  3.  
  4. from bokeh.palettes import Spectral4
  5. # 导入颜色模块
  6.  
  7. df = pd.DataFrame({'A':np.random.randn(500).cumsum(),
  8. 'B':np.random.randn(500).cumsum(),
  9. 'C':np.random.randn(500).cumsum(),
  10. 'D':np.random.randn(500).cumsum()},
  11. index = pd.date_range('',freq = 'D',periods=500))
  12. # 创建数据
  13.  
  14. p = figure(plot_width=800, plot_height=400, x_axis_type="datetime")
  15. p.title.text = '点击图例来隐藏数据'
  16.  
  17. for col,color in zip(df.columns.tolist(),Spectral4):
  18. p.line(df.index,df[col],line_width=2, color=color, alpha=0.8,legend = col,
  19. muted_color=color, muted_alpha=0.2) # 设置消隐后的显示颜色、透明度 可以设置muted_color = 'black'
  20.  
  21. p.legend.location = "top_left"
  22. p.legend.click_policy="mute"
  23. # 设置图例,点击隐藏
  24.  
  25. show(p)

6. 交互工具

  1. # 2、交互小工具
  2. # 图表分页
  3.  
  4. from bokeh.models.widgets import Panel, Tabs
  5. # 导入panel,tabs模块
  6.  
  7. p1 = figure(plot_width=500, plot_height=300)
  8. p1.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)
  9. tab1 = Panel(child=p1, title="circle")
  10. # child → 页码
  11. # title → 分页名称
  12.  
  13. p2 = figure(plot_width=500, plot_height=300)
  14. p2.line([1, 2, 3, 4, 5], [4, 2, 3, 8, 6], line_width=3, color="navy", alpha=0.5)
  15. tab2 = Panel(child=p2, title="line")
  16.  
  17. tabs = Tabs(tabs=[ tab1, tab2 ])
  18. # 设置分页图表
  19.  
  20. show(tabs)

 

Python交互图表可视化Bokeh:7. 工具栏的更多相关文章

  1. Python交互图表可视化Bokeh:1. 可视交互化原理| 基本设置

    Bokeh pandas和matplotlib就可以直接出分析的图表了,最基本的出图方式.是面向数据分析过程中出图的工具:Seaborn相比matplotlib封装了一些对数据的组合和识别的功能:用S ...

  2. Python交互图表可视化Bokeh:5 柱状图| 堆叠图| 直方图

    柱状图/堆叠图/直方图 ① 单系列柱状图② 多系列柱状图③ 堆叠图④ 直方图 1.单系列柱状图 import numpy as np import pandas as pd import matplo ...

  3. Python交互图表可视化Bokeh:6. 轴线| 浮动| 多图表

    绘图表达进阶操作 ① 轴线设置② 浮动设置③ 多图表设置 1. 轴线标签设置 设置字符串 import numpy as np import pandas as pd import matplotli ...

  4. Python交互图表可视化Bokeh:4. 折线图| 面积图

    折线图与面积图 ① 单线图.多线图② 面积图.堆叠面积图 1. 折线图--单线图 import numpy as np import pandas as pd import matplotlib.py ...

  5. Python交互图表可视化Bokeh:3. 散点图

    散点图 ① 基本散点图绘制② 散点图颜色.大小设置方法③ 不同符号的散点图 1. 基本散点图绘制 import numpy as np import pandas as pd import matpl ...

  6. Python交互图表可视化Bokeh:2. 辅助参数

    图表辅助参数设置 辅助标注.注释.矢量箭头 参考官方文档:https://bokeh.pydata.org/en/latest/docs/user_guide/annotations.html#col ...

  7. Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?

    Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...

  8. Python 数据图表工具的比较

    Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析.数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些. 幸运的是,过去 ...

  9. Python绘图与可视化

    Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用 ...

随机推荐

  1. Python-视图 触发器 事务 存储过程

    1.视图2.触发器*** 在某个时间发生了某个事件时 会自动触发一段sql语句3.事务*****4.存储过程***** 5.函数6.备份与恢复*** mysqldump -u -p (库名 [表名] ...

  2. SQL Server2016导出数据表数据

    SQL Server2016导出数据表数据 高文龙关注0人评论3914人阅读2017-09-22 08:41:56 SQL Server2016导出数据表数据 我们前面已经介绍了很多关于SQL Ser ...

  3. 关于Sublime text 3如何编辑less并转(编译)成css文件

    今天开始学习使用less这个强大方便的前端工具,本来是考虑用koala(专门编辑less的软件)来使用less的,但是发现sublime编辑器也可以实现对less的编译及高亮显示代码,这样既能少用一个 ...

  4. Vue+restfulframework示例

    一.简单回顾vue 前不久我们已经了解了vue前端框架,所以现在强调几点: 修改源: npm config set registry https://registry.npm.taobao.org 创 ...

  5. 小学生都看得懂的C语言入门(1): 基础/判别/循环

    c基础入门, 小学生也可以都看得懂!!!! 安装一个编译器, 这方面我不太懂, 安装了DEV-C++  ,体积不大,30M左右吧, 感觉挺好用,初学者够了. 介绍下DEV 的快键键: 恢复 Ctrl+ ...

  6. python(4): regular expression正则表达式/re库/爬虫基础

    python 获取网络数据也很方便 抓取 requests 第三方库适合做中小型网络爬虫的开发, 大型的爬虫需要用到 scrapy 框架 解析 BeautifulSoup 库, re 模块 (一) r ...

  7. lightoj1197 素数双筛,可以参考poj的那题双筛

    /* 判断一个数是否是素数,只要判断这个数有没有在[2,sqrt(n)]区间的因子 同样,对于大数短区间的筛选,同样可以用这种判断方式, 先筛出sqrt(n)范围内的素数,然后用这些素数去筛出区间内的 ...

  8. Nginx详解三:Nginx基础篇之yum安装

    Nginx快速搭建 Mainline version ----开发版:具有最新功能的版本,用于测试.研究.学习,不用于企业生成环境 Stable version----稳定版:官方认可,且通过测试的 ...

  9. AI学习吧-结算中心

    结算中心流程 在结算中心中,主要是对用户添加到购物车商品的结算,由于用户可能添加了多个课程,但是,结算时会选择性的进行支付.在结算时会选中课程id,和对应的价格策略.在后台,首先会对用户进行校验,验证 ...

  10. 利用SVD-推荐未尝过的菜肴

    推荐未尝过的菜肴-基于物品相似度的推荐 推荐系统的工作过程:给定一个用户,系统会为此用户返回N个最好的推荐菜 1. 寻找用户没有评级的菜肴,即在用户-物品矩阵中的0值 2. 在用户没有评级的所有物品中 ...