使用图例突出显示数据

这将我们带到本教程中的最终交互性示例:交互式图例。

在“ 使用字形绘制数据”部分中,您了解了在创建绘图时实现图例是多么容易。有了这个传奇,增加交互性只是分配一个问题click_policy。使用单行代码,您可以使用图例快速添加任何一种hide或mute数据的功能。

在这个例子中,你会看到两个相同的散点图,比较勒布朗詹姆斯和凯文杜兰特的比赛点数和篮板数。唯一的区别是,一个将使用a hide作为其click_policy,而另一个使用mute。

第一步是配置输出并设置数据,从player_statsDataFrame 为每个玩家创建一个视图:

# Bokeh Librariesfrom bokeh.plotting import figure, showfrom bokeh.io import output_filefrom bokeh.models import ColumnDataSource, CDSView, GroupFilterfrom bokeh.layouts import row# Output inline in the notebookoutput_file('lebron-vs-durant.html', title='LeBron James vs. Kevin Durant')# Store the data in a ColumnDataSourceplayer_gm_stats = ColumnDataSource(player_stats)# Create a view for each playerlebron_filters = [GroupFilter(column_name='playFNm', group='LeBron'), GroupFilter(column_name='playLNm', group='James')]lebron_view = CDSView(source=player_gm_stats, filters=lebron_filters)durant_filters = [GroupFilter(column_name='playFNm', group='Kevin'), GroupFilter(column_name='playLNm', group='Durant')]durant_view = CDSView(source=player_gm_stats, filters=durant_filters)在创建图形之前,可以将图形,标记和数据中的公共参数合并到字典中并重复使用。这不仅可以在下一步中节省冗余,而且还可以在以后需要时提供一种简单的方法来调整这些参数:

# Consolidate the common keyword arguments in dictscommon_figure_kwargs = { 'plot_width': 400, 'x_axis_label': 'Points', 'toolbar_location': None,}common_circle_kwargs = { 'x': 'playPTS', 'y': 'playTRB', 'source': player_gm_stats, 'size': 12, 'alpha': 0.7,}common_lebron_kwargs = { 'view': lebron_view, 'color': '#002859', 'legend': 'LeBron James'}common_durant_kwargs = { 'view': durant_view, 'color': '#FFC324', 'legend': 'Kevin Durant'}现在已经设置了各种属性,可以以更简洁的方式构建两个散点图:

# Create the two figures and draw the datahide_fig = figure(**common_figure_kwargs, title='Click Legend to HIDE Data', y_axis_label='Rebounds')hide_fig.circle(**common_circle_kwargs, **common_lebron_kwargs)hide_fig.circle(**common_circle_kwargs, **common_durant_kwargs)mute_fig = figure(**common_figure_kwargs, title='Click Legend to MUTE Data')mute_fig.circle(**common_circle_kwargs, **common_lebron_kwargs, muted_alpha=0.1)mute_fig.circle(**common_circle_kwargs, **common_durant_kwargs, muted_alpha=0.1)请注意,mute_fig有一个额外的参数调用muted_alpha。当mute用作标记时,此参数控制标记的不透明度click_policy。

最后,click_policy设置每个图,它们以水平配置显示:

# Add interactivity to the legendhide_fig.legend.click_policy = 'hide'mute_fig.legend.click_policy = 'mute'# Visualizeshow(row(hide_fig, mute_fig))

一旦传说中的地方,所有你需要做的是分配任一hide或mute到人物的click_policy属性。这将自动将您的基本图例转换为交互式图例。

另请注意,特别是mute,LeBron James和Kevin Durant muted_alpha的相应circle字形中设置了附加属性。这决定了图例互动驱动的视觉效果。

有关Bokeh中所有事物交互的更多信息,在Bokeh用户指南中添加交互是一个很好的起点。

总结和后续步骤

恭喜!你已经完成了本教程的结尾。

您现在应该拥有一套很棒的工具来开始使用Bokeh将数据转换为漂亮的交互式可视化。

你学会了如何:

配置脚本以呈现为静态HTML文件或Jupyter Notebook实例化和自定义figure()对象使用字形构建可视化使用。访问和过滤您的数据 ColumnDataSource在网格和选项卡式布局中组织多个图添加不同形式的交互,包括选择,悬停操作,链接和交互式图例为了更好地探索Bokeh的功能,官方的Bokeh用户指南是深入了解更高级主题的绝佳场所。我还建议您查看Bokeh的画廊,了解大量的例子和灵感。

Bokeh 网站文档https://bokeh.pydata.org/en/latest/docs/reference.html

python交互式和文件式区别_Python中的交互式数据可视化与Bokeh(系列五)相关推荐

  1. python交互式和文件式区别_Python 运行.py文件和交互式运行代码的区别详解

    代码版本:3.6.3 1. 交互式运行代码会直接给出表达式的结果,运行代码文件必须print才能在控制台看到结果. 直接给出结果: 没有print是看不到结果的: 有print才能看到结果: 另:交互 ...

  2. python集合和字典的区别_Python中的字典和集合

    导语:本文章记录了本人在学习Python基础之数据结构篇的重点知识及个人心得,打算入门Python的朋友们可以来一起学习并交流. 本文重点: 1.掌握常见的字典创建,查询,判别方法: 2.了解字典中的 ...

  3. python多线程和多进程的区别_python中多线程与多进程的区别

    线程的概念: 线程是操作系统中进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程可以有多个线程,每条线程可以同时执行不同的任务.一个 ...

  4. python包和库的区别_python中模块、包、库的区别和使用

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  5. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  6. python xlrd读取文件报错_python中xlrd库如何实现文件读取?

    俗话说得好,技多不压身,虽然我们已经掌握了多种可以实现读取文件的方式,但是丝毫不影响我们要学会精益求精,他说学习文件读取的奥秘,况且,数据分析是十分重要的,一切的代码运行,总归都是要服务于数据,好啦, ...

  7. python属性和方法的区别_Python中几种属性访问的区别

    起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ .本文阐述它们的区别和用法. 属性的访问 ...

  8. python属性和方法的区别_Python中几种属性访问的区别与用法详解

    起步 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言, ...

  9. python函数与方法的区别_python中函数和方法有哪些区别

    python中函数和方法有哪些区别 发布时间:2020-11-16 09:30:04 来源:亿速云 阅读:89 作者:小新 小编给大家分享一下python中函数和方法有哪些区别,相信大部分人都还不怎么 ...

最新文章

  1. Asp.net 三层架构搭建示例一
  2. LeetCode:85. 最大矩形
  3. linux缓存代码,Linux使用的缓存
  4. 第十二期:常用的几种大数据架构剖析
  5. 腾讯云直播sdk_官方推荐 | 2分钟带你认识腾讯云直播 CSS
  6. 中国女排代言作业帮直播课,作业帮累计用户已超8亿
  7. ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议
  8. SQLSTATE[HY000] [2013] Lost connection to MySQL...
  9. 【转】两个算法题,感觉挺有意思
  10. melt函数_熊猫的melt()和使用pivot()函数取消融化
  11. sklearn文本聚类分析
  12. 软件测试与质量保证习题
  13. 计算机二级vb基础教程,2017计算机二级考试内容VB
  14. 浮点数计算常见错误1.#INF, 1.#IND和#QNAN
  15. python中输入字符串_python如何输入字符串
  16. wpf 监听退出事件_【WPF】监听WPF的WebBrowser控件弹出新窗口的事件
  17. 记一次github 翻车事件
  18. 十二星座匹配对象_水瓶座最佳配对对象是谁
  19. ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(十二)—— 向日葵生产太阳
  20. make: *** [Makefile:44:obj/start.o] 错误 127

热门文章

  1. 【编程】二叉树的先序、中序、后序遍历
  2. [云炬创业基础笔记]第七章创业资源测试5
  3. 谈慎独2017-12-19
  4. 记第二期“研途同行“研究生论坛《出国交流经验分享》
  5. html判断是否有某个元素,JS基础篇--如何用JavaScript判断dom是否有存在某class的值?...
  6. 关于iis部署的一些小问题
  7. C++ 类的静态成员(static)
  8. 【CyberSecurityLearning 46】PHP 函数
  9. 五分钟了解先验概率和后验概率
  10. Struts2学习总结一