Plotly:如何使用日期时间索引绘制中心有一条线的范围?

2024-04-27

我想绘制一条周围有范围的线,就像这张照片所示:

我发布了一个原始问题,但没有指定索引是日期时间索引。我以为这并不重要,但我错了。

有一个答案用数字索引覆盖它:

Plotly:如何制作具有多条线和标准差阴影区域的图形? https://stackoverflow.com/questions/61494278/plotly-how-to-make-a-figure-with-multiple-lines-and-shaded-area-for-standard-de/61501980?noredirect=1

和文档在这里:

https://plotly.com/python/continuous-error-bars/ https://plotly.com/python/continuous-error-bars/

但没有涵盖日期时间索引的问题。

以下是一些测试数据:

timestamp      price   min  mean   max  
1596267946298  100.0   100  100.5  101
1596267946299  101.0   100  100.5  101
1596267946300  102.0   98   99.5   102
1596267948301  99.0    98   99.5   102
1596267948302  98.0    98   99.5   102
1596267949303  99.0    98   995.   102

我希望乐队覆盖从最小到最大的范围,并将平均值绘制在中心。

另一种选择是从上面发布的问题的第一个答案中获取代码(Plotly:如何制作具有多条线和标准差阴影区域的图形? https://stackoverflow.com/questions/61494278/plotly-how-to-make-a-figure-with-multiple-lines-and-shaded-area-for-standard-de/61501980?noredirect=1)并将数据生成更改为:

index = pd.date_range('1/1/2000', periods=25, freq='T')
df = pd.DataFrame(dict(A=np.random.uniform(low=-1, high=2, size=25).tolist(),
                       B=np.random.uniform(low=-4, high=3, size=25).tolist(),
                       C=np.random.uniform(low=-1, high=3, size=25).tolist()),
                  index=index)

这将以相同的方式工作,但创建一个日期时间索引。


与中的设置相比链接问题 https://stackoverflow.com/questions/61494278/plotly-how-to-make-a-figure-with-multiple-lines-and-shaded-area-for-standard-de/61501980?noredirect=1,造成麻烦的事实是x+x[::-1]不适用于日期时间索引。但如果你设置x=df.index in:

# add line and shaded area for each series and standards deviation
for i, col in enumerate(df):
    new_col = next(line_color)
    # x = list(df.index.values+1)
    x = df.index

然后替换x+x[::-1] with x=x.append(x[::-1]):

# standard deviation area
fig.add_traces(go.Scatter(
                            #x+x[::-1],
                            x=x.append(x[::-1]),

那么事情应该会进展顺利。

Plot:

完整代码:

# imports
import plotly.graph_objs as go
import plotly.express as px
import pandas as pd
import numpy as np

# sample data in a pandas dataframe
np.random.seed(1)
df=pd.DataFrame(dict(A=np.random.uniform(low=-1, high=2, size=25).tolist(),
                    B=np.random.uniform(low=-4, high=3, size=25).tolist(),
                    C=np.random.uniform(low=-1, high=3, size=25).tolist(),
                    ))
df = df.cumsum()

# set daterange as index
df['dates'] = pd.date_range('2020', freq='D', periods=len(df))
df.set_index('dates', inplace=True)

# ---

# define colors as a list 
colors = px.colors.qualitative.Plotly

# convert plotly hex colors to rgba to enable transparency adjustments
def hex_rgba(hex, transparency):
    col_hex = hex.lstrip('#')
    col_rgb = list(int(col_hex[i:i+2], 16) for i in (0, 2, 4))
    col_rgb.extend([transparency])
    areacol = tuple(col_rgb)
    return areacol

rgba = [hex_rgba(c, transparency=0.2) for c in colors]
colCycle = ['rgba'+str(elem) for elem in rgba]

# Make sure the colors run in cycles if there are more lines than colors
def next_col(cols):
    while True:
        for col in cols:
            yield col
line_color=next_col(cols=colCycle)

# plotly  figure
fig = go.Figure()

# add line and shaded area for each series and standards deviation
for i, col in enumerate(df):
    new_col = next(line_color)
    x = df.index
    y1 = df[col]
    y1_upper = [(y + np.std(df[col])) for y in df[col]]
    y1_lower = [(y - np.std(df[col])) for y in df[col]]
    y1_lower = y1_lower[::-1]

    # standard deviation area
    fig.add_traces(go.Scatter(
                                #x+x[::-1],
                                x=x.append(x[::-1]),
                                y=y1_upper+y1_lower,
                                fill='tozerox',
                                fillcolor=new_col,
                                line=dict(color='rgba(255,255,255,0)'),
                                showlegend=False,
                                name=col))

    # line trace
    fig.add_traces(go.Scatter(x=df.index,
                              y=y1,
                              line=dict(color=new_col, width=2.5),
                              mode='lines',
                              name=col)
                                )
fig.update_layout(xaxis=dict(range=[df.index[1],df.index[-1]]))
fig.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Plotly:如何使用日期时间索引绘制中心有一条线的范围? 的相关文章

  • 在 Robot 框架中的测试套件中设置会话 cookie

    我的应用程序是一个 RESTful API 仅当会话 cookie 存在时才有效 不幸的是 我总是需要在一个网页登录获取 cookie 并传递会话cookie到 API 来建立会话 我能够找出解决方案来验证会话 cookie 并将其传递给
  • uwsgi + Django REST框架:空闲时间后很少有缓慢的请求

    我正在运行 Django REST 框架 白天每分钟的请求率相当低 我注意到一个我无法解释或重现的问题 每天 在夜间或清晨 当我的 RPM 接近于零时 我会收到 1 10 个超慢的请求 我的平均响应时间100 到 200 毫秒之间 但是这个
  • 添加反斜杠而不转义[重复]

    这个问题在这里已经有答案了 我需要逃离 字符串中的 字符 问题是每当我string string replace 结果是 添加额外的反斜杠来转义原始反斜杠 如何删除这个多余的反斜杠 结果 仅显示 实际上字符串是 gt gt gt str g
  • 在 Django 中上传文件

    我在 Django 1 6 版本 中上传文件时遇到问题 当我尝试做的时候new file data save 在我的views py 中我收到此错误 quiz patent 22 medical record 2 exams 处的属性错误
  • Python ttk.combobox 强制发布/打开

    我正在尝试扩展 ttk 组合框类以允许自动建议 我到目前为止的代码运行良好 但我想让它在输入一些文本后显示下拉列表 而不从小部件的输入部分移除焦点 我正在努力解决的部分是找到一种强制下拉的方法 在 python 文档中我找不到任何提及这一点
  • set() 可以在 Python 进程之间共享吗?

    我正在 Python 2 7 中使用多重处理来处理非常大的数据集 当每个进程运行时 它会将整数添加到共享的 mp Manager Queue 中 但前提是其他进程尚未添加相同的整数 由于您无法对队列进行 in 式成员资格测试 因此我这样做的
  • 使用 gin 索引和 sqlalchemy 返回排名搜索结果

    我为全文搜索设置了 GIN 索引 我想获取与搜索查询匹配的记录列表 按排名排序 记录与搜索查询的匹配程度 对于结果 我只需要记录及其列 不需要用于排序的实际排名值 我有以下查询 它运行良好并从我的 postgresql 数据库返回预期结果
  • 使用 Python gdata 和 oAuth 2 对日历进行身份验证

    我正在将一个 Python 应用程序从 oAuth 1 迁移到 oAuth 2 该应用程序读取用户的 Google 日历提要 使用 oAuth 1 如果用户可以使用他的 GMail 进行身份验证 我的应用程序将打开浏览器 帐户并授权访问 我
  • 默认可变参数的惯用方式

    在 python 中 如果直接将可变类型设置为默认参数 则会出现众所周知的边缘情况 def foo x return x y foo y append 1 print foo 通常的解决方法是将参数默认为None然后将其放入体内 然而 有
  • 鉴于我的代码是开源的并且我在服务器上运行,并且我接受近乎原始的代码,那么对我来说最糟糕的情况是什么?

    我正在研究几个案例 在这些案例中 接受近乎原始的代码会容易得多 所以 如果你不能使用 lambda 你能对表达式做的最糟糕的事情是什么 以及如何做 如果不能使用 import 那么对执行的代码最糟糕的情况是什么 如何使用 不能使用 X 扫描
  • 在Python中使用Counter()来构建直方图?

    我在另一个问题上看到我可以使用Counter 计算一组字符串中出现的次数 所以如果我有 A B A C A A I get Counter A 3 B 1 C 1 但现在 我如何使用该信息来构建直方图 对于您的数据 最好使用条形图而不是直方
  • 将 numpy 记录数组转换为字典列表的有效方法

    如何转换下面的 numpy 记录数组 recs Bill 31 260 0 Fred 15 145 0 r rec fromrecords recs names name age weight formats S30 i2 f4 到字典列表
  • 在 Mac OS x 10.7.5 中运行 Scrapy 所需的文件,使用 Python 2.7.3 IEPD_free(32 位)

    我是第一次测试 scrapy 使用命令安装后 sudo easy install U scrapy 一切似乎都运行正常 但是 当我运行时 scrapy startproject tutorial 我得到以下信息 luismacbookpro
  • 为什么 Python 布尔值占用超过一个字节?

    显然 Python 中整数占用 24 个字节 我可以理解 它这样做是因为代表无限数字的额外花哨 然而 布尔数据类型看起来也花费了高达 24 个字节 尽管它只能表示两个可能值之一 为什么 除了 1 位表示之外 还可能需要存储哪些额外数据Tru
  • Twitter 不再使用请求库 python

    我有一个 python 函数 它使用 requests 库和 BeautifulSoup 来抓取特定用户的推文 import requests from bs4 import BeautifulSoup contents requests
  • 有没有办法只从 python 列表中输出数字?

    简单的问题 list 1 asdada 1 123131 131 blaa adaraerada 0 000001 34 12451235265 stackoverflow is awesome 我想创建一个list 2这样它只包含数字 l
  • Pygame 文本不渲染

    好的 我正在用 python 和 pygame 制作一个多项选择测验游戏 不过 我已经完成了开始屏幕并尝试制作问题屏幕 我根本不明白为什么文本不呈现 这是我的代码 enter pressed False random question ra
  • 如何从 Python 脚本捕获 Curl 的输出

    我想使用curl查找有关网页的信息 但在Python中 到目前为止我有这个 os system curl head www google com 如果我运行它 它会打印出 HTTP 1 1 200 OK Date Sun 15 Apr 20
  • Python:ConfigParser.NoSectionError:没有部分:“TestInformation”

    我使用上面的代码收到 ConfigParser NoSectionError No section TestInformation 错误 def LoadTestInformation self config ConfigParser Co
  • 如何在Python中从stdin中逐行读取

    每个人都知道如何在 C 中计算 STDIN 中的字符 但是 当我尝试在 python3 中执行此操作时 我发现这是一个难题 计数器 py import sys chrCounter 0 for line in sys stdin readl

随机推荐

  • 如何从后端路由内的第三方API获取?

    尝试从第三方 url 获取 JSON 数据并将其带到我的后端路由 首先 我将查询字符串输入到应用程序的 url 中 并将它们存储到变量中 并在第三方 url 中使用它 尽管来自应用程序 url 的查询字符串已正确存储 但第二个和第三个查询字
  • 如何从 Visual Studio Online 在 FTP 上部署工件?

    我已经在 Visual Studio Online 上设置了自动构建 并且能够在构建下获取工件 现在我想在 FTP 上部署工件 由于我的网站托管在 GoDaddy 上 并且他们为我提供了 FTP 帐户 任何人都可以帮我设置此帐户吗 这可以通
  • Reactjs中的递归函数

    我正在使用递归函数制作动态菜单 并且我已经制作了菜单并且它以正确的顺序显示 没有任何问题 我从以下位置收到菜单数据服务 js文件 您可以在下面的代码沙箱示例中看到整个工作应用程序 https codesandbox io s reactst
  • 为什么 jquery $.ajax 会删除数据中的换行符而 $.get 不会?

    我使用 ajax 和 get 调用相同的 PHP 脚本 并得到两个不同的结果 ajax 会从通过函数传递的数据中去除换行符 而 get 不会 我尝试将 dataType 显式设置为 text 和 html 但没有成功 get 的大多数参数默
  • 如何使 Java 中的自定义泛型类型链表排序?

    我正在用 java 编写自己的泛型链表 而不是使用 java 集合链表 链表的add方法由以下代码组成 public void add T item int position Node
  • 如何更改 Android 设备上的 MAC 地址? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种简单的方法可以手动更改 A
  • 如何从分叉中签出 PR?

    我正在使用 github 托管一些项目 有人分叉了我的存储库并提交了 pr 我以前从未需要在 fork 中测试 pr 我如何检查分支并测试它 我可以如何将其放入我的仓库中吗 或者我应该检查分叉并以这种方式测试分支吗 您不需要访问叉子 只需使
  • 如何在两个图像之间淡出和淡出?

    好的 这里有一点帮助 所以我的启动屏幕中加载了两个图像 第一个图像打开 启动启动画面 然后第二个图像打开 一旦第二个图像关闭 主活动就会开始 现在我的问题是如何使我的第一张图像淡出 然后淡入第二张图像 哦 是的 而且没有交叉淡入淡出 只是完
  • 在辅助方法中 React i18next useTranslation Hook

    我正在使用 React 和react i18next 我的 index tsx 文件包含一些组件 我可以在那里使用翻译功能 index js import React Suspense from react import ReactDOM
  • 检查数组中元素的数据类型是否为日期对象的最简单方法?

    我想创建一个条件来检查数组中元素的数据类型 由电子表格中的数据组成 是否是日期对象 因此 我可以操纵该日期的字符串格式 因为我不想要像这样的日期 Thu May 23 2013 00 00 00 GMT 0400 EDT 但像这样 23 0
  • 如何在 Microsoft Edge 上运行本机消息传递示例?

    我想跑安全输入 https github com MicrosoftEdge MicrosoftEdge Extensions Demos tree master SecureInput例如 但在我构建并部署 NativeMessaging
  • 有没有一种好的方法可以将每个 Meteor.user 包装在具有原型函数等的对象中?

    我正在尝试想出一种很好的方法来将从 Meteor Accounts Collection 中获取的每个用户包装在一个函数中 包括一些原型辅助函数和来自其他集合的计数等 描述这一点的最佳方法是使用代码 我想要包装每个用户的 User 函数看起
  • Android 支持 v4 22.2.0 的 Proguard 配置

    更新 Gradle Android 构建的依赖关系后使用com android support support v4 22 2 0从本地 Maven extras 存储库 在 SDK 内 Proguard 开始抛出这些问题 Warning
  • 如何避免 Scala 中的可变局部变量?

    避免在 Scala 中使用可变变量被认为是一种很好的做法 来自 Scala 编程 第 2 版 第 52 页 Scala 允许您以命令式风格进行编程 但鼓励您采用更具函数式的风格 后来 Scala 鼓励您倾向于 vals 但最终达到适合手头工
  • 如何在 AWS 中已有的 Terraform 资源(手动创建)中使用?

    有没有办法在我的 AWS 帐户中使用手动创建的 terraform 资源 我不想改变它们 老实说 我不想 碰 它们 我只需要为我正在创建的环境提供一些资源 例如 vpc 和 IAM 我读过一些有关导入的内容 但我不确定这就是答案吗 Terr
  • Android handler.postDelayed 正在停止我的媒体播放器以顺利运行歌曲?

    您好 我是 Android 编程新手 我在构建媒体播放器应用程序时需要很少的帮助 在该应用程序中我使用搜索栏来更新进度 如下所示 Handler handler new Handler paly setOnClickListener new
  • 如何在 PowerShell 中从数组创建 ArrayList?

    我有一个数组中的文件列表 我想枚举这些文件 并从中删除特定文件 显然我无法从数组中删除项目 所以我想使用ArrayList 但以下内容对我不起作用 temp Get ResourceFiles resourceFiles New Objec
  • C99 中带有 0 个参数的可变参数宏

    我有一些调试代码 如下所示 define STRINGIFY x x define TOSTRING x STRINGIFY x define AT FILE TOSTRING LINE void my error const char l
  • 与Java混淆覆盖访问级别[重复]

    这个问题在这里已经有答案了 可能的重复 为什么不能降低java子类中方法的可见性 https stackoverflow com questions 1600667 why cant you reduce the visibility of
  • Plotly:如何使用日期时间索引绘制中心有一条线的范围?

    我想绘制一条周围有范围的线 就像这张照片所示 我发布了一个原始问题 但没有指定索引是日期时间索引 我以为这并不重要 但我错了 有一个答案用数字索引覆盖它 Plotly 如何制作具有多条线和标准差阴影区域的图形 https stackover