如何在时间序列图中添加和定义多条线?

2024-05-26

我正在使用 python 的plotly 库创建一个基于线的时间序列图。我想将其连接到时间序列数据库,但目前我一直在使用 csv 数据进行测试。

是否有可能有一个x and y轴(时间与值),并从另一个 csv 列值(主机)加载多行并附加到 x 和 y 图表?

import pandas as pd
import plotly.express as px

 df = pd.read_csv('stats.csv')

 fig = px.line(df, x = 'time', y = 'connections', title='connections')
 fig.show()

我想在同一个图表上使用特定的 csv 主机列值定义多条线,以便每一行都由host列,并使用time vs connections轴。可以吗px.line方法适用于该用例,还是我应该考虑另一种方法?


对于plotly,您的源是数据库连接还是csv 文件并不重要。无论哪种方式,您很可能都会通过 pandas 数据框来处理该部分。但既然您谈论的是数据库,我将向您展示如何轻松地在具有典型数据库结构的数据集上构建绘图图表,在这种数据库结构中,您通常必须依赖数据的分组和子集来显示更改随着时间的推移,您的数据的不同子类别。 Plotly Express 有一些有趣的数据集尝试(dir(px.data)),就像gapminder数据集一样:

    country continent   year    lifeExp pop gdpPercap   iso_alpha   iso_num
0   Afghanistan Asia    1952    28.801  8425333 779.445314  AFG 4
1   Afghanistan Asia    1957    30.332  9240934 820.853030  AFG 4
2   Afghanistan Asia    1962    31.997  10267083    853.100710  AFG 4
3   Afghanistan Asia    1967    34.020  11537966    836.197138  AFG 4
4   Afghanistan Asia    1972    36.088  13079460    739.981106  AFG 4

如果您使用正确的方法,您可以轻松使用px.line()在这样的数据集上构建一个图形,并让图形函数为您处理分组。甚至稍后使用相同的函数将数据添加到该图中。下图是使用以下组合构建的px.line(), go.Figure() and add_traces

Plot 1:一个图使用px.line()

该图显示了欧洲大陆人均国内生产总值最高的五个国家。数据使用如下参数进行分组color='country'.

Plot 2:将数据添加到同一图

该图将美洲大陆人均国内生产总值最高的五个国家添加到第一个图。这就触发了以另一种方式识别数据的需要,以便能够看出数据是欧洲的还是美国的。这是使用参数处理的line_dash='country'以便与原始图相比的所有新数据都有虚线。

这只是一种方法。如果最终结果是您想要的,我们也可以讨论其他方法。

完整代码:

import plotly.graph_objs as go
import plotly.express as px
import pandas as pd

# Data
gapminder = px.data.gapminder()

# Most productive european countries (as of 2007)
df_eur = gapminder[gapminder['continent']=='Europe']
df_eur_2007 = df_eur[df_eur['year']==2007]
eur_gdp_top5=df_eur_2007.nlargest(5, 'gdpPercap')['country'].tolist()
df_eur_gdp_top5 = df_eur[df_eur['country'].isin(eur_gdp_top5)]

# Most productive countries on the american continent (as of 2007)
df_ame = gapminder[gapminder['continent']=='Americas']
df_ame_2007 = df_ame[df_ame['year']==2007]
df_ame_top5=df_ame_2007.nlargest(5, 'gdpPercap')['country'].tolist()
df_ame_gdp_top5 = df_ame[df_ame['country'].isin(df_ame_top5)]

# Plotly figure 1
fig = px.line(df_eur_gdp_top5, x='year', y='gdpPercap',
              color="country",
              line_group="country", hover_name="country")
fig.update_layout(title='Productivity, Europe' , showlegend=False)


# Plotly figure 2
fig2 = go.Figure(fig.add_traces(
                 data=px.line(df_ame_gdp_top5, x='year', y='gdpPercap',
                              color="country",
                              line_group="country", line_dash='country', hover_name="country")._data))
fig2.update_layout(title='Productivity, Europe and America', showlegend=False)

#fig.show()
fig2.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在时间序列图中添加和定义多条线? 的相关文章

随机推荐

  • swift 4 - HMCharacteristicTypeSerialNumber 已弃用

    我想阅读输入的配件信息HMAccessory 例如序列号 HMCharacteristicTypeSerialNumber 制造商 HMCharacteristicTypeManufacturer 模型 HMCharacteristicTy
  • 无法使用 R 中的 Quantmod 从雅虎财经下载数据

    我正在尝试使用以下代码从雅虎下载数据 library quantmod getSymbols WOW auto assign F 过去 这对我来说在任何场合都有效 除了现在 在我的小组作业到期前 5 天 但现在我收到此错误 Error in
  • 如何随机打乱向量中的元素

    我正在尝试完成一项需要发生以下情况的作业 请求所需的元素数量 n 用元素 0 1 2 n 1 填充向量并将其显示到控制台 随机打乱元素并将新的排列显示到控制台 我可以输入向量 但我不知道如何对向量进行洗牌 注意 我不能使用 random s
  • 为什么使用 ES6 Map 而不是普通的 javascript 对象?

    如果我们可以用普通的 javascript 对象创建键 值对 那么使用新的 ES6 的原因是什么Map https developer mozilla org en US docs Web JavaScript Reference Glob
  • 如何从 Linux 内核模块获取使用计数?

    我对正在开发的内核模块的使用计数有疑问 我想打印它以进行调试 如何从模块代码中获取它 有问题的内核版本 Linux 2 6 32 module refcount http lxr linux no linux v2 6 34 1 inclu
  • 如何让 Heroku 安装 devDependency?

    我希望 Heroku 在推送应用程序后构建我的应用程序 这样我就不必每次进行更改时都将构建文件夹向上推送 然而 Heroku 仅安装来自package json和 grunt 我的构建工具 及其所有组件都在devDependencies 我
  • shell中如何求数组的长度?

    shell中如何求数组的长度 例如 arr 1 2 3 4 5 我想得到它的长度 在本例中是 5 a 1 2 3 4 echo a 4
  • 如何在 vb.Net 中设置默认表单?

    如何将第四个表单设置为在 Visual Studio 2008 中按 f5 时将运行的默认表单 因为表单 1 始终是第一个启动的 在解决方案资源管理器中右键单击您的项目 选择属性 选择应用程序选项卡 从 启动表单 下的下拉列表中选择您的表单
  • 正则表达式与 ls 的用法

    我正在尝试使用 ER 扩展正则表达式 with ls like ls 我正在尝试打印包含扩展名的所有文件 我知道我可以用ls 但我想尝试使用 ER 当我运行该代码时 我收到此错误 ls No such file or directory 您
  • 如何使用 Tailwind CSS 更改输入范围滑块的颜色?

    祝您度过美好的一天 我目前正在尝试将一些颜色应用于简单的滑块范围
  • Elasticsearch 可搜索合成字段

    假设源文档 JSON 中存在几个名为的字段 a and b 属于类型long 我想构建一个综合字段 例如c 通过用下划线连接前面字段的值和 将其索引为keyword 也就是说 我正在研究一个可以通过如下虚构的部分映射来支持的功能 a typ
  • 如何使用批处理文件安装文件夹中的所有.exe?

    我正在尝试开发以下算法 对于当前文件夹 包含脚本的文件夹 中的所有文件 执行以下操作 将文件一一安装 cls setlocal disableDelayedExpansion if PROCESSOR ARCHITECTURE x86 se
  • python matplotlib 保存图形而不显示

    我想创建一个直方图并将其保存到文件中而不将其显示在屏幕上 我现在拥有的代码默认显示该图 我找不到任何方法来抑制显示该图 我也尝试过 pyplot hist nrs 也有同样的问题 import math time matplotlib py
  • 如何处理 SIGTERM

    Java 有没有办法处理收到的 SIGTERM 是的 您可以使用以下命令注册关闭挂钩Runtime addShutdownHook http java sun com javase 7 docs api java lang Runtime
  • 如何随机化(洗牌)JavaScript 数组?

    我有一个像这样的数组 var arr1 a b c d 我怎样才能随机 洗牌它 事实上的无偏洗牌算法是Fisher Yates 又名 Knuth 洗牌 https en wikipedia org wiki Fisher E2 80 93Y
  • HTMLUNIT getformbyname 网站中未指定表单名称

    我正在尝试使用 HTMLUNIT 单击网站上的按钮 我按照本教程进行操作http htmlunit sourceforge net gettingStarted html http htmlunit sourceforge net gett
  • Flutter:设置AppBar的高度

    我怎样才能简单地设置高度AppBar在颤振中 栏的标题应保持垂直居中 即AppBar 您可以使用首选尺寸 https api flutter dev flutter widgets PreferredSize class html clas
  • 从 Qt 更改屏幕分辨率?

    我想更改屏幕分辨率 然后使用一个 ActiveX 控件 Flash 播放器 进入全屏 显然 仅适用于 Windows 的解决方案就可以了 有 Qt api 吗 还是我需要深入研究 winapi 如果是这样 我该在哪里查找 关键字 谢谢您的帮
  • 使用 API 密钥和机密保护 Spring Boot API

    我想保护 Spring Boot API 的安全 以便只有拥有有效 API 密钥和秘密的客户端才能访问它 但是 程序内部没有身份验证 使用用户名和密码的标准登录 因为所有数据都是匿名的 我想要实现的目标是所有 API 请求只能用于特定的第三
  • 如何在时间序列图中添加和定义多条线?

    我正在使用 python 的plotly 库创建一个基于线的时间序列图 我想将其连接到时间序列数据库 但目前我一直在使用 csv 数据进行测试 是否有可能有一个x and y轴 时间与值 并从另一个 csv 列值 主机 加载多行并附加到 x