『Plotly实战指南』--交互功能基础篇
在数据可视化领域,静态图表早已无法满足用户对深度分析与探索的需求。
Plotly作为新一代交互式可视化工具,通过其强大的交互功能重新定义了"数据叙事"的边界。
通过精心设计的交互功能,我们可以显著提升数据探索的效率,增强用户的参与感,并实现动态叙事。
本文我们将介绍如何用Plotly库来添加一些基本的互动效果,比如改进鼠标悬停时显示的信息,还有怎么设置图表的缩放和平移功能。
1. 鼠标悬停交互
Plotly 提供了强大的悬停提示功能,可以通过hovertemplate参数灵活定义提示框的内容。
import plotly.graph_objects as go
fig = go.Figure(
data=[
go.Scatter(
x=[1, 2, 3],
y=[4, 5, 6],
hovertemplate="<b>%{meta[1]}</b> 观测值<br>"
+ "X轴: %{x}<br>"
+ "Y轴: %{y:.2f}<br>" # 数值格式化
+ "时间戳: %{meta[0]|%Y-%m-%d}<br>", # 日期格式化
)
]
) # 预留扩展空间
fig.update_traces(
meta=[
["2023-04-15", "实验A"],
["2023-04-16", "实验B"],
["2023-04-17", "实验C"],
]
) # 元数据注入
fig.show()
在hovertemplate中,我们使用了<b>标签实现重点信息加粗;
通过%{x}的方式在悬停提示内容中嵌入变量;
通过%{y:.2f}实现数值的精度控制;
通过%{meta[0]}和%{meta[1]}调用元数据信息;
并且对%{meta[0]}进行了日期格式化输出。

此外,还可以通过hoverlabel参数,设置悬停提示框的背景色以及字体等,提升视觉效果。
通过hovermode参数,还可以设置提示框的模式,
比如下面示例中设置了hovermode="x unified",x表示会显示X轴的值,unified表示以统一的方式与所有的图形元素进行悬停交互。
fig.update_layout(
hoverlabel=dict(
bgcolor="rgba(255,255,255,0.9)", # 半透明白色背景
font_size=12,
),
hovermode="x unified",
)
fig.show()

2. 缩放交互
Plotly 提供了矩形缩放工具,默认情况下,用户可以通过拖拽鼠标选择区域进行缩放。
fig.update_layout(dragmode="zoom")
fig.show()

上面的矩形缩放是默认操作,如果想用鼠标滚轮来进行缩放的话,进行如下设置:
fig.show(config={"scrollZoom":True})
这样就可以用鼠标的滚轮进行缩放了。

3. 平移交互
Plotly 支持拖拽平移功能,用户可以通过鼠标拖拽图表进行平移。
默认情况下,鼠标拖拽是缩放功能,改成拖拽平移的话,使用如下代码设置:
fig.update_layout(dragmode="pan")
fig.show()

在某些情况下,可能需要限制平移的范围,以避免用户过度操作。
通过设置fixedrange=True,可以锁定坐标轴范围,防止用户拖拽超出合理范围。
比如下面的代码,设置了X轴范围固定,这样就只能上下平移了。
fig.update_layout(dragmode="pan")
fig.update_xaxes(fixedrange=True)
fig.show()

4. 总结
交互设计是一门平衡功能丰富性与操作简洁性的艺术。
在设计数据可视化交互功能时,我们需要充分考虑用户的实际需求和操作习惯。
通过优化悬停提示、实现灵活的缩放与平移功能,我们可以显著提升数据可视化的效果和用户体验。
实践建议:
- 悬停提示遵循「3秒原则」:关键信息需在3秒内获取,避免用户等待过长时间。
- 缩放设计采用「渐进式披露」:先展示概览,再逐步探索细节,帮助用户更好地理解数据。
- 用户体验测试:通过真实用户的反馈优化延迟参数与触发逻辑,确保交互设计符合用户需求。
『Plotly实战指南』--交互功能基础篇的更多相关文章
- 20155308『网络对抗技术』Exp5 MSF基础应用
20155308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 20165308『网络对抗技术』Exp5 MSF基础应用
20165308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...
- 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍
目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
- 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素
目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...
- 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载
目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...
- 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解
目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...
- 『心善渊』Selenium3.0基础 — 10、使用Seleniun定位页面元素归纳总结(超详细)
目录 1.Selenium中8种基本元素定位方式 (1)单数形式 (2)复数形式 2.By类定位的8种定位方式 (1)单数形式 (2)复数形式 3.XPath定位总结 (1)基础定位语法 (2)属性定 ...
- 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作
目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...
随机推荐
- [阿里DIN] 从论文源码梳理深度学习几个概念
[阿里DIN] 从论文源码梳理深度学习几个概念 目录 [阿里DIN] 从论文源码梳理深度学习几个概念 0x00 摘要 0x01 全连接层 1.1 全连接层作用 1.2 CNN 1.3 RNN 1.4 ...
- Linux使用堡垒机
一.linux系统使用 1. 安装 puttygen sudo apt-get install putty 2. 进入 pem 所在文件执行转换命令 puttygen mykey.pem -o myk ...
- Typecho 从零开始搭建个人博客详细教程
搭建Typecho个人博客需要进行一些准备工作.以下是大致的教学步骤: 1. 准备工作: - 一台支持PHP和MySQL的服务器,可以是虚拟主机或者自己搭建的服务器. - 一个域名,用于访 ...
- [Windows] 联发科秒开bl一键版(mtk)
声明 不是所有的联发科都可 天机 8000 8100 9000等不行 已知 天机820 天机1000 mtk G90t 天机800 可以 其余自己测试 除了新款均可 第一步 下载软件 (是个压缩包需要 ...
- SSM:Spring整合Mybatis时,连接池和SQLSessionFactory的联系!
- JUC并发—14.Future模式和异步编程分析
大纲 1.FutureTask(Future/Callable)的使用例子 2.FutureTask(Future/Callable)的实现原理 3.FutureTask(Future/Callabl ...
- 解决kali虚拟机无法联网问题
解决kali虚拟机无法联网问题 1.排查虚拟机网络连接-检查ipv4设置,确定好手动连接还是DHCP 如图一 2.排查虚拟网络编辑器-网卡配置,确定虚拟机直连外部网络是否为同一网口 如图二 3.排查虚 ...
- composer remove 卸载依赖
remove 命令 remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除: $ composer remove monolog/monolog ...
- PLSQL Developer使用大全
第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发.如今,有越来越多的商业逻辑和应用逻辑转向了Oracle S ...
- 开源!Django-Vue3-Admin的Python后台管理系统
Django-Vue3-Admin 项目简介 Django-Vue3-Admin 是一个基于 Django + Vue3 的前后端分离的后台管理系统,采用了最新的前后端技术栈,内置了丰富的功能模块,可 ...