Python可视化Dash教程简译(二)

简介: Python可视化Dash教程简译(二)

作为数据分析的重要一环,把得到的数据或者分析结果以图表的方式展示,是一种直观、优雅的方式。Dash是基于Flask的Python可视化工具,我在学习之余尝试着翻译官方的Tutorial,有不足之处,还望不吝指正


Dash Callbacks

本章节描述了如何使Dash应用程序具有可交互性。


01.Dash APP Layout


让我们从一个简单的例子开始

试着在输入框里输入信息,输出组件的子项就会立即更新。让我们分解一下这里发生的事情:

1. 我们应用程序的输入(Input)和输出(Output)接口,都是通过装饰器app.callback来方式声明的。

2. 在Dash里,我们应用程序的输入和输出只是特定组件的属性。在例子当中,我们的输入是ID为“my-id”组件的value属性,我们的输出是ID为“my-div”组件的children属性。

3. 每当输入属性发生改变时,都会自动调用被回调装饰器callback包装的函数。Dash使用输入属性的新值作为输入参数,提供给函数调用,接着Dash使用函数返回的内容更新输出组件的属性。

4. component_id和component_property关键字是可选的(每个对象只有两个参数),为了清晰可见,例子中包含了它们,但是为了简洁和可读性,可以省略它们。

5. 不要混淆了dash.dependencies.Input对象和dash_core_components.Input对象,前者只应用于回调,而后者则是真实的组件。

6. 请注意我们时怎么在布局中给my-div组件的children属性赋值的,当Dash程序启动时,它会自动使用输入组件的初始值来调用回调函数,以填充输出组件的初始状态。所以,即使我们使用了类似html.Div(id='my-div', children='Hello world')这种的写法,也会在程序启动时被覆盖的。

有点像Microsoft Excel的编程,每当输入单元格发生变化时,依赖于该单元格的所有单元格都会自动更新,这成为“反应是编程”。

还记得每个组件是如何通过其关键字参数集来被完整描述的吗?那些属性现在很重要,通过与Dash交互,我们可以使用回调函数动态更新任何属性。我们经常会更新组件的子节点以显示新文本或dcc.Graph组件的图形以显示新数据,但我们也可以更新组件的样式甚至更新dcc.Dropdown组件的可用选项!

让我们看一下dcc.Slider更新dcc.Graph的另一个例子:

在例子当中,Slider的“value”属性是app的输入,而app的输出则是Graph的“figure”属性。当Slider的value变化时,Dash都会使用新的数据来调用callback函数update_figure。该函数使用此新值过滤数据集,构造一个图形对象,并将其返回到Dash应用程序。

这个例子中有一些不错的模式:

1. 我们使用Pandas库导入和过滤内存中的数据集。

2. 我们在app的最开始节点加载数据集df = pd.read_csv(‘…’),这个数据集df处于程序的全局状态,可以在回调函数的内部读取。

3. 加载数据到内存中可能很昂贵,通过在应用程序开始时而不是在回调函数内部加载查询数据,可以确保我们只在应用程序启动时执行此操作。当用户访问应用程序会与程序交互时,数据(df)已经在内存当中了。可能的情况下,昂贵的初始化(如下载或查询数据)应该在应用程序的全局范围而不是在回调函数中完成。

4. 回调函数不会改变原始数据,它只是通过Pandas过滤器过滤来创建数据集副本。这一点非常重要:你的回调函数不应该改变其范围之外的变量。如果你的回调函数改变了全局变量,那么一个用户的会话可能会影响下一个用户的会话,同时当应用程序是以多进程或者多线程的方式部署时,这些修改不会在会话中共享。


02.多输入


在Dash程序中,任何“output”都可以有多个“input”组件。这里有一个绑定了5个输入到1个输出的例子,注意下app.callback是如何在第二个参数的列表里展示所有的5个输入的。

在例子当中,当Dropdown、Slider或者RadioItems的value属性变化时,update_graph函数都会被调用。

update_graph函数的输入参数是每个input属性的最新值或者当前值,按照其指定的顺序排列。

即使一次只有一个输入发生变化,Dash程序可以搜集所有指定的输入属性的当前状态,并将它们传递给你的函数。


03.多输出


每一个Dash回调函数只能更新唯一的输出属性,如果想实现多输出,需要编写多个函数。

你还可以将输入和输出连接在一起:一个回调函数的输出可以是另一个回调函数的输入。

此模式可以用于创建动态UI,其中一个输入组件更新下一个输入组件的可选项。一个简单的例子:

第一个回调函数根据第一个RadioItems组件中的选定值来更新第二个RadioItems组件的可选项。

第二个回调函数options属性改变时设置初始值,将它设置为options数组中的第一个值

最后一个回调函数展示了每个组件的选定值。如果更改了国家/地区的RadioItems组件的值,Dash将会等待,直到cities组件的值也被更新了,才会调用最终的回调函数。这时为了防止回调函数以不一致的状态被调用,例如“USA”和“Montréal”。


04. 综述


我们已经介绍了Dash中回调函数的基本原理,Dash应用程序是基于一系列简单但是强大的原则构建的:声明UI,可以通过反应性和功能性Python回调函数来自定义。声明性组件的每个元素属性都可以通过回调函数进行更新,属性的子集(如dcc.Dropdown的value属性)可以由用户在界面中编辑。


相关文章
|
9天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
20天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
189 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
85 8
|
2月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
151 7
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
56 4
|
2月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
63 5
|
2月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
558 7
|
3月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
145 5
|
3月前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之 Scipy 显著性检验第9部分,介绍了显著性检验的基本概念、作用及原理,通过样本信息判断假设是否成立。着重讲解了使用scipy.stats模块进行显著性检验的方法,包括正态性检验中的偏度和峰度计算,以及如何利用normaltest()函数评估数据是否符合正态分布。示例代码展示了如何计算一组随机数的偏度和峰度。
44 1
|
3月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。

热门文章

最新文章