在数据可视化领域,静态图表早已无法满足用户对深度分析与探索的需求。

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实战指南』--交互功能基础篇的更多相关文章

  1. 20155308『网络对抗技术』Exp5 MSF基础应用

    20155308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  2. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  3. 20165308『网络对抗技术』Exp5 MSF基础应用

    20165308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  4. 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍

    目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...

  5. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  6. 『心善渊』Selenium3.0基础 — 6、Selenium中使用XPath定位元素

    目录 1.Selenium中使用XPath查找元素 (1)XPath通过id,name,class属性定位 (2)XPath通过标签中的其他属性定位 (3)XPath层级定位 (4)XPath索引定位 ...

  7. 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载

    目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...

  8. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  9. 『心善渊』Selenium3.0基础 — 10、使用Seleniun定位页面元素归纳总结(超详细)

    目录 1.Selenium中8种基本元素定位方式 (1)单数形式 (2)复数形式 2.By类定位的8种定位方式 (1)单数形式 (2)复数形式 3.XPath定位总结 (1)基础定位语法 (2)属性定 ...

  10. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

随机推荐

  1. [阿里DIN] 从论文源码梳理深度学习几个概念

    [阿里DIN] 从论文源码梳理深度学习几个概念 目录 [阿里DIN] 从论文源码梳理深度学习几个概念 0x00 摘要 0x01 全连接层 1.1 全连接层作用 1.2 CNN 1.3 RNN 1.4 ...

  2. Linux使用堡垒机

    一.linux系统使用 1. 安装 puttygen sudo apt-get install putty 2. 进入 pem 所在文件执行转换命令 puttygen mykey.pem -o myk ...

  3. Typecho 从零开始搭建个人博客详细教程

    搭建Typecho个人博客需要进行一些准备工作.以下是大致的教学步骤: 1. 准备工作:    - 一台支持PHP和MySQL的服务器,可以是虚拟主机或者自己搭建的服务器.    - 一个域名,用于访 ...

  4. [Windows] 联发科秒开bl一键版(mtk)

    声明 不是所有的联发科都可 天机 8000 8100 9000等不行 已知 天机820 天机1000 mtk G90t 天机800 可以 其余自己测试 除了新款均可 第一步 下载软件 (是个压缩包需要 ...

  5. SSM:Spring整合Mybatis时,连接池和SQLSessionFactory的联系!

  6. JUC并发—14.Future模式和异步编程分析

    大纲 1.FutureTask(Future/Callable)的使用例子 2.FutureTask(Future/Callable)的实现原理 3.FutureTask(Future/Callabl ...

  7. 解决kali虚拟机无法联网问题

    解决kali虚拟机无法联网问题 1.排查虚拟机网络连接-检查ipv4设置,确定好手动连接还是DHCP 如图一 2.排查虚拟网络编辑器-网卡配置,确定虚拟机直连外部网络是否为同一网口 如图二 3.排查虚 ...

  8. composer remove 卸载依赖

    remove 命令 remove 命令用于移除一个包及其依赖(在依赖没有被其他包使用的情况下),如果依赖被其他包使用,则无法移除: $ composer remove monolog/monolog ...

  9. PLSQL Developer使用大全

    第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发.如今,有越来越多的商业逻辑和应用逻辑转向了Oracle S ...

  10. 开源!Django-Vue3-Admin的Python后台管理系统

    Django-Vue3-Admin 项目简介 Django-Vue3-Admin 是一个基于 Django + Vue3 的前后端分离的后台管理系统,采用了最新的前后端技术栈,内置了丰富的功能模块,可 ...