博主原文链接:https://www.yourmetaverse.cn/nlp/439/
使用Gradio库进行交互式数据可视化:Timeseries模块介绍
在数据分析和机器学习任务中,对时间序列数据进行可视化是一项常见且重要的任务。Gradio是一个功能强大的Python库,可以帮助我们快速构建交互式界面,并且它还提供了一个特殊的模块,即Timeseries模块,用于处理时间序列数据的可视化。
Gradio的Timeseries模块允许用户上传和预览时间序列的CSV文件,或者以图形方式显示由时间序列组成的DataFrame。通过这个模块,用户可以通过拖放文件或上传文件来加载时间序列数据,并以图形形式展示数据。
该模块的初始化参数包括:
- value:用于指定时间序列CSV文件的路径,可以是字符串或可调用对象。如果是可调用对象,该函数将在应用程序加载时调用,以设置组件的初始值。
- x:x轴(时间)序列的列名,如果CSV文件没有标题,则为None。
- y:y轴序列的列名,如果有多个序列,则可以是列名的列表。如果CSV文件没有标题,则为None。
- colors:用于每条线图的颜色列表。
- label:组件在界面中的名称。
- every:如果
value
是可调用对象,在客户端连接打开时每隔指定的秒数运行函数。如果没有设置,则不生效。 - show_label:是否显示组件的名称。
- container:是否将组件放置在容器中,提供一些额外的边框填充。
- scale:相对于相邻组件的宽度比例。例如,如果组件A的scale为2,组件B的scale为1,那么A的宽度将是B的两倍。应为整数。
- min_width:最小像素宽度,如果屏幕空间不足以满足该值,则换行。如果某个scale值导致该组件比min_width更窄,则优先使用min_width参数。
- interactive:是否允许用户上传时间序列CSV文件,如果为False,则只能用于显示时间序列数据。如果未提供,则根据组件是作为输入还是输出进行推断。
- visible:是否显示该组件。
- elem_id:可选的字符串,用作该组件在HTML DOM中的ID,可以用于定位CSS样式。
- elem_classes:可选的字符串列表,用作该组件在HTML DOM中的类名,可以用于定位CSS样式。
除了初始化参数外,Timeseries模块还提供了一个change方法,用于在组件的值发生更改时触发事件。该方法适用于在Gradio Blocks中使用该组件的情况。
change方法的参数包括:
- fn:需要包装为界面的函数,通常是一个机器学习模型的预测函数。函数的每个参数对应一个输入组件,函数应返回单个值或值的元组,元组中的每个元素对应一个输出组件。
- inputs:作为输入的组件列表。
- outputs:作为输出的组件列表。
- api_name:定义端点在API文档中的显示方式。
- status_tracker:用于跟踪状态的对象。
- scroll_to_output:如果为True,在完成后将滚动到输出组件。
- show_progress:在等待期间是否显示进度动画。
- queue:是否将请求放入队列中。
- batch:如果为True,则函数应处理一批输入,即接受每个参数的输入值列表。然后函数必须返回一个元组的列表(即使只有一个输出组件),元组中的每个列表对应一个输出组件。
- max_batch_size:如果从队列中调用此方法,则最大批处理输入数量。
- preprocess:是否在运行函数之前运行组件数据的预处理。
- postprocess:是否在将函数输出返回给浏览器之前运行组件数据的后处理。
- cancels:需要在此事件触发时取消的其他事件列表。
- every:在客户端连接打开时每隔指定的秒数运行此事件。
通过Gradio的Timeseries模块,我们可以方便地进行时间序列数据的交互式可视化,无论是上传CSV文件还是直接在界面中显示数据,都能够快速实现。该模块的灵活性和易用性使得数据分析和机器学习工作变得更加高效和直观。
参数详解
下面是关于Timeseries模块和change方法的参数整理表格:
参数名 | 数据类型 | 默认值 | 描述 |
---|---|---|---|
value | str/Callable | None | 用于指定时间序列的CSV文件路径。如果是Callable类型,则在应用程序加载时调用该函数以设置组件的初始值。 |
x | str | None | x(时间)序列的列名。如果CSV文件没有标题,则为None,此时第一列为x序列。 |
y | str/list[str] | None | y序列的列名,如果有多个序列,则为列名列表。如果CSV文件没有标题,则为None,此时第一列之后的每一列都是y序列。 |
colors | list[str] | None | 每个线图使用的颜色的有序列表。 |
label | str | None | 在界面中显示的组件名称。 |
every | float | None | 如果value 是一个callable,将在客户端连接打开时每隔’every’秒运行一次该函数。否则没有影响。队列必须启用。可以通过此组件的.load_event属性访问事件(例如取消它)。 |
show_label | bool | True | 如果为True,则显示标签。 |
container | bool | True | 如果为True,则将组件放置在容器中,提供一些额外的边框填充。 |
scale | int | None | 相对于相邻组件在一行中的宽度比例。例如,如果组件A的scale=2,组件B的scale=1,则A的宽度是B的两倍。应为整数。 |
min_width | int | 160 | 最小像素宽度,如果屏幕空间不足以满足此值,将换行。如果某个scale值导致该组件比min_width更窄,则首先遵守min_width参数。 |
interactive | bool | None | 如果为True,则允许用户上传时间序列的CSV文件;如果为False,则仅可用于显示时间序列数据。如果未提供,将根据组件是用作输入还是输出进行推断。 |
visible | bool | True | 如果为False,则组件将被隐藏。 |
elem_id | str | None | 可选字符串,作为此组件在HTML DOM中的id分配。可用于定位CSS样式。 |
elem_classes | list[str]/str | None | 可选的字符串列表,作为此组件在HTML DOM中的类分配。可用于定位CSS样式。 |
fn | Callable | None | 必需参数。当组件的值发生更改时触发该监听器,无论是因为用户输入(例如用户在文本框中输入)还是因为函数更新(例如图像从事件触发的输出中接收到值)。每个函数参数对应一个输入组件,函数应返回单个值或元组,其中元组的每个元素对应一个输出组件。 |
inputs | Component/list[Component]/set[Component]/None | None | 要用作输入的gradio.components的列表。如果函数不需要输入,则应该是一个空列表。 |
outputs | Component/list[Component]/None | None | 要用作输出的gradio.components的列表。如果函数不返回输出,则应该是一个空列表。 |
api_name | str/None/Literal[False] | None | 定义端点在API文档中的显示方式。可以是字符串、None或False。如果为False,则不会在api文档中公开该端点。如果设置为None,则该端点将作为一个无名端点在api文档中公开,尽管这种行为将在Gradio 4.0中更改。如果设置为字符串,则该端点将以给定的名称在api文档中公开。 |
status_tracker | None | None | |
scroll_to_output | bool | False | 如果为True,则在完成时将滚动到输出组件。 |
show_progress | Literal[‘full’, ‘minimal’, ‘hidden’] | “full” | 如果为True,则在等待时显示进度动画。 |
queue | bool/None | None | 如果为True,则将请求放入队列(如果队列已启用)。如果为False,则即使队列已启用,也不会将此事件放入队列。如果为None,则使用gradio应用程序的队列设置。 |
batch | bool | False | 如果为True,则函数应处理一批输入,这意味着它应接受每个参数的输入值列表。列表的长度应相等(并且最长为max_batch_size)。然后函数 必须 返回一个元组的列表(即使只有1个输出组件),其中元组中的每个列表对应一个输出组件。 |
max_batch_size | int | 4 | 如果从队列调用此方法,则批处理在一起的最大输入数(仅当batch=True时才相关)。 |
preprocess | bool | True | 如果为False,则在运行’fn’之前不运行组件数据的预处理(例如,如果使用Image 组件以base64字符串形式传递,将其保留为base64字符串)。 |
postprocess | bool | True | 如果为False,则在将’fn’输出返回给浏览器之前不运行组件数据的后处理。 |
cancels | dict[str, Any]/list[dict[str, Any]]/None | None | 要在此监听器触发时取消的其他事件列表。例如,设置cancels=[click_event]将取消click_event,其中click_event是另一个组件的.click方法的返回值。尚未运行的函数(或正在迭代的生成器)将被取消,但正在运行的函数将被允许完成。 |
every | float/None | None | 在客户端连接打开时每隔’every’秒运行此事件。以秒为单位解释。队列必须启用。 |