『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( ...
随机推荐
- 你知道PCB走线可以过多大的瞬态电流吗?
相信很多同学在PCB Layout设计过程中,都有过这样的疑问:网口要做8KV浪涌防护,PCB走线应该走多宽呢? 有经验的硬件工程师可能此时就会说了,那还不简单,表层走线按照1mm/A,内层走线按照2 ...
- 本地连接bat脚本
1设置静态ip地址(1) netsh interface ip set address name="网络名" source=static addr=ip地址 mask=子网掩码 g ...
- Project Euler 638 题解
q-analog,老玩家集体起立! 这也就是说: \[\binom{n+m}{n}_q=\sum_{\pi\in L_{n,m}}q^{area(\pi)} \] 结束! #include<bi ...
- 记录:tinyrenderer---1.2 Rasterizing the boundary
光栅化三角形 Scanline rendering(扫描线渲染),一个老式的算法 按y轴坐标进行排序,我这里采取降序,ay > by > cy 同时光栅化三角形的左右两边 绘制水平线段,连 ...
- CICFlowMeter 使用方法
前言 因实验需要提取流量特征,就找到了这个较为著名的流量特征提取工具 CICFlowMeter .例如 CIC-IDS-2017 数据集就是通过这个工具提取而来. 网络上的教程众说纷纭,但我始终是无法 ...
- 【Abaqus】Composite Layup建模
abaqus 的3个复合材料建模途径: 传统的material->section->orientation->step->job的建模方式 Composite Layup建模方 ...
- My'Bug
修改时未校验工作经历是否为空
- 三分钟掌握音视频处理 | 在 Rust 中优雅地使用 FFmpeg
前言 音视频处理看似高深莫测,但在开发中,我们或多或少都会遇到相关需求,比如视频格式转换.剪辑.添加水印.音频提取等. FFmpeg 作为行业标准,几乎无所不能,很多流行的软件(如 VLC.YouTu ...
- 为什么AI教师难以实现
提供AI应用咨询+陪跑服务,有需要回复1 本周为一家教育公司提供了全天的AI的培训,后续涉及AI+教育领域的项目开发,而我去年就做过AI教师项目,所以对AI+教育有一定熟悉度. 下来后又拜访了一家互联 ...
- 接口常用code码
// Informational 1xx 100 => 'Continue', 101 => 'Switching Protocols', // Success 2xx 200 => ...