【Python百日进阶-数据分析】Day221 - plotly使用日期类型轴的时间序列 2

news2025/1/20 18:39:16

文章目录

  • 九、具有自定义日期范围的时间序列图
    • 9.1 使用plotly.express
    • 9.2 使用graph_objects
    • 9.3 手动设置日期范围
  • 十、带范围滑块的时间序列
  • 十一、带范围选择器按钮的时间序列
  • 十二、按缩放级别自定义刻度标签格式
  • 十三、隐藏周末和假期
    • 13.1 隐藏正常周末
    • 13.2 隐藏周末和指定日期
    • 13.3 隐藏非营业时间
    • 13.4 上午9点至下午5点以外的时间隐藏
  • 十四、Dash中的应用

九、具有自定义日期范围的时间序列图

可以使用datetime.datetime对象或日期字符串手动设置数据范围。

9.1 使用plotly.express

# Using plotly.express
import plotly.express as px

import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('F:/finance-charts-apple.csv')

fig = px.line(df, x='Date', y='AAPL.High', range_x=['2016-07-01','2016-12-31'])
fig.show()

在这里插入图片描述

9.2 使用graph_objects

# Using graph_objects

import plotly.graph_objects as go
import datetime

x = [datetime.datetime(year=2013, month=10, day=4),
     datetime.datetime(year=2013, month=11, day=5),
     datetime.datetime(year=2013, month=12, day=6)]

fig = go.Figure(data=[go.Scatter(x=x, y=[1, 3, 6])])
# 使用datetime对象设置xaxis范围
fig.update_layout(xaxis_range=[datetime.datetime(2013, 10, 17),
                               datetime.datetime(2013, 11, 20)])
fig.show()

在这里插入图片描述

9.3 手动设置日期范围

import plotly.express as px
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = px.line(df, x='Date', y='AAPL.High')

# 使用日期字符串设置xaxis范围
fig.update_layout(xaxis_range=['2016-07-01','2016-12-31'],
                  title_text="手动设置日期范围")
fig.show()

在这里插入图片描述

十、带范围滑块的时间序列

范围滑块是绘图下方的类似子图的小区域,允许用户在保持图表概览的同时平移和缩放 X 轴。查看更多选项的参考:https 😕/plotly.com/python/reference/layout/xaxis/#layout-xaxis-rangeslider

import plotly.express as px
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = px.line(df, x='Date', y='AAPL.High', title='带范围滑块的时间序列')

fig.update_xaxes(rangeslider_visible=True)
fig.show()

在这里插入图片描述

十一、带范围选择器按钮的时间序列

范围选择器按钮是与时间序列和范围滑块配合使用的特殊控件,允许用户轻松设置 x 轴的范围。查看更多选项的参考:https 😕/plotly.com/python/reference/layout/xaxis/#layout-xaxis-rangeselector

import plotly.express as px
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = px.line(df, x='Date', y='AAPL.High', title='带有范围滑块和选择器的时间序列')

fig.update_xaxes(
    rangeslider_visible=True,
    rangeselector=dict(
        buttons=list([
            dict(count=1, label="1m", step="month", stepmode="backward"),
            dict(count=6, label="6m", step="month", stepmode="backward"),
            dict(count=1, label="YTD", step="year", stepmode="todate"),
            dict(count=1, label="1y", step="year", stepmode="backward"),
            dict(step="all")
        ])
    )
)
fig.show()

在这里插入图片描述

十二、按缩放级别自定义刻度标签格式

该tickformatstops属性可用于根据缩放级别自定义刻度标签的格式。尝试放大下面的图表,看看刻度标签格式如何变化。查看更多选项的参考:https 😕/plotly.com/python/reference/layout/xaxis/#layout-xaxis-tickformatstops

import plotly.graph_objects as go
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = go.Figure(go.Scatter(
    x = df['Date'],
    y = df['mavg']
))

fig.update_xaxes(
    rangeslider_visible=True,
    tickformatstops = [
        dict(dtickrange=[None, 1000], value="%H:%M:%S.%L ms"),
        dict(dtickrange=[1000, 60000], value="%H:%M:%S s"),
        dict(dtickrange=[60000, 3600000], value="%H:%M m"),
        dict(dtickrange=[3600000, 86400000], value="%H:%M h"),
        dict(dtickrange=[86400000, 604800000], value="%e. %b d"),
        dict(dtickrange=[604800000, "M1"], value="%e. %b w"),
        dict(dtickrange=["M1", "M12"], value="%b '%y M"),
        dict(dtickrange=["M12", None], value="%Y Y")
    ]
)

fig.show()

在这里插入图片描述

十三、隐藏周末和假期

rangebreaks类型的 x 轴和 y 轴上可用的属性可date用于隐藏某些时间段。在下面的示例中,我们显示了两个图:一个在默认模式下显示数据中的空白,另一个在我们隐藏周末和节假日的情况下显示不间断的交易历史。请注意 12 月 21 日和 1 月 4 日的网格线之间的较小间隙,其中假期被删除。查看更多选项的参考:https 😕/plotly.com/python/reference/layout/xaxis/#layout-xaxis-rangebreaks

注意:此功能的一个已知限制是它不支持scattergl跟踪。px.scatter在具有或px.line或或的数百个数据点的绘图上使用此功能时px.area,您可能需要传入render_mode="svg"以确保基础跟踪类型是scatter和不是scattergl。

13.1 隐藏正常周末

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = px.scatter(df, x='Date', y='AAPL.High', range_x=['2015-12-01', '2016-01-15'],
                 title="Default Display with Gaps")
fig.show()

在这里插入图片描述

13.2 隐藏周末和指定日期

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
# 'https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv'
df = pd.read_csv('f:/finance-charts-apple.csv')

fig = px.scatter(df, x='Date', y='AAPL.High', range_x=['2015-12-01', '2016-01-15'],
                 title="用rangebreaks来隐藏周末和假日的间隙")
fig.update_xaxes(
    rangebreaks=[
        dict(bounds=["sat", "mon"]), # 隐藏周末
        dict(values=["2015-12-25", "2016-01-01"])  # 隐藏圣诞节和新年
    ]
)
fig.show()

在这里插入图片描述

13.3 隐藏非营业时间

上述rangebreaks功能也适用于隐藏小时时段。

import plotly.express as px
import pandas as pd
import numpy as np
np.random.seed(1)

work_week_40h = pd.date_range(start='2020-03-01', end='2020-03-07', freq="BH")

df = pd.DataFrame(dict(
    date = work_week_40h,
    value = np.cumsum(np.random.rand(40)-0.5)
))

fig = px.scatter(df, x="date", y="value",
                 title="带间隙的默认显示")
fig.show()

在这里插入图片描述

13.4 上午9点至下午5点以外的时间隐藏

import plotly.express as px
import pandas as pd
import numpy as np
np.random.seed(1)

work_week_40h = pd.date_range(start='2020-03-01', end='2020-03-07', freq="BH")

df = pd.DataFrame(dict(
    date = work_week_40h,
    value = np.cumsum(np.random.rand(40)-0.5)
))

fig = px.scatter(df, x="date", y="value",
                 title="用休息时间隐藏非工作时间间隔")
fig.update_xaxes(
    rangebreaks=[
        dict(bounds=[17, 9], pattern="hour"), # 上午9点至下午5点以外的时间隐藏
    ]
)
fig.show()

在这里插入图片描述

十四、Dash中的应用

import plotly.graph_objects as go # or plotly.express as px
fig = go.Figure() # or any Plotly Express function e.g. px.bar(...)
# fig.add_trace( ... )
# fig.update_layout( ... )

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()
app.layout = html.Div([
    dcc.Graph(figure=fig)
])

app.run_server(debug=True, use_reloader=False)  # Turn off reloader if inside Jupyter

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 11关闭系统更新的方法有哪些?

之前问的最多的就是Win10关闭更新的方法,现在轮到了Windows11,下面我们就具体来看看如何关闭Windows11的系统更新。方案一:使用注册表编辑器关闭Win11更新Windows注册表实质上是一个庞大的数据库,存储着各种各样的计算机数据与配置…

Windows系统下Python安装教程

Python安装环境为Windows10系统(64) 1.Python下载 选择Python官网进行下载(Welcome to Python.org),进入网站,点击Downloads,进入下载模块,鼠标指针放到Download,选择Wi…

聚焦行业,2022巨杉客户案例及产品荣获多项殊荣

2022年,巨杉客户实践案例及产品 广受肯定,荣获多项殊荣 荣誉不仅属于巨杉 它源自于每一位客户的信任和支持 感谢每一位客户对巨杉产品的选择和认可 客户创新实践案例 巨杉联合江阴农商行获评爱分析银行数字化创新实践案例 9月,在“2022…

InstallShield 制作INF驱动安装程序

题外话: 使用INF文件制作经过签名的CAT文件可以参考如下博文: https://blog.csdn.net/qq_29729577/article/details/113537243 回归正题: 本例使用InstallShield 2020版本 驱动文件准备 将INF、CAT、SYS等驱动相关文件放至同一目录下&…

【动态内存管理】C语言

前言: 为什么会存在动态内存分配 我们以前学过的开辟空间的方式有两个特点: 1 空间开辟大小是固定的; 2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配; 但是对于空间的需求&#xff0c…

Qt基于CTK Plugin Framework搭建插件框架--插件通信【注册接口调用】

文章目录一、前言二、插件完善2.1、添加接口文件2.2、添加接口实现类2.3、服务注册(Activator注册服务)三、接口调用四、接口 - 插件 - 服务的关系4.1、1对14.2、多对14.3、1对多一、前言 通过Qt基于CTK Plugin Framework搭建插件框架–创建插件一文&am…

解决方案|Keithley吉时利源表测试软件的典型应用及案例介绍

数字源表又称源测量单元(SMU),是数字万用表(DMM)、电压源、实际电流源、电子负载和脉冲发生器的有用功能集成在仪器中,相当于电压源、电流源、电压表、电流表和电阻表的综合体可以作为四象限电压源或电流源提供精确的电压或电流,同时测量电流…

聚类模型(K-means聚类,系统聚类,DBSCAN算法)

所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主要差异。聚类和分类的区别:分类是已知类别的&#xf…

Kafka 生产者

Kafka 生产者 生产者就是负责向 Kafka 发送消息的。 生产者业务逻辑 (生产者业务逻辑流程) 生产者开发示例 一个正常的生产逻辑流程如下: 配置生产者客户端参数及创建相应的生产者实例 构建待发送的消息 发送消息 关闭生产者实例 生…

CSS权威指南(八)基本元素框

文章目录1.基本元素框2.内边距3.边框4.轮廓5.外边距1.基本元素框 文档中每个元素都会生成一个矩形框,我们称之为元素框。这个框体描述元素在文档布局中所占的空间。因此,元素框之间是有影响的,涉及位置和尺寸。 (1)宽…

如何在 Excel VBA 中插入行

在本文中,我将解释如何使用VBA(Visual Basic for Applications)在Excel中插入行。VBA 是一种编程语言,适用于在Excel和其他Office程序中工作的人员,因此可以通过编写所谓的宏来自动化Excel中的任务。使用VBA编码,我们可以执行Excel中执行的所有大多数任务,就像复制、粘贴…

【手写 Vue2.x 源码】第十六篇 - 生成 render 函数 - 代码拼接

一,前言 上篇,生成 ast 语法树 - 构造树形结构部分 基于 html 特点,使用栈型数据结构记录父子关系开始标签,结束标签及文本的处理方式代码重构及ast 语法树构建过程分析 本篇,使用 ast 语法树生成 render 函数 - 代…

双软认证-深圳市

双软认证是软件企业的认证和软件产品的登记,企业申请双软认证除了获得软件企业和软件产品的认证资质,同时也是对企业知识产权的一种保护方式,更可以让企业享受国家提供给软件行业的税收优惠政策。 想要在这个残酷的市场中生存下去的话&#x…

cc1200 Sub-1 GHz RF Transceivers 开发

一些应用需要定制开发无线串口、指定发送频点、调制方式、加密传输等等,需要使用无线数据的传输场景,需要使用公用频段进行数据传输。一些场景需要使用Sub-1 GHz频点进行数据传输,比如无线串口,其他无线申请,在国内选择…

集群调度情况

1 集群调度 2 调度简介 Scheduler是kubernetes的调度器,主要任务是把定义的pod分配到集群的节点上。听起来非常简单,但有很多要考虑的问题 公平: 如何保证每个节点都能被分配资源 资源高效利用:集群所有资源最大化被使用 效率&…

【 uniapp - 黑马优购 | 购物车页面(1)】如何创建购物车编译模式、 商品列表区域实现

个人名片: 🐼作者简介:一名大二在校生,讨厌编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

LeetCode[692]前K个高频单词

难度:中等题目:给定一个单词列表 words和一个整数 k,返回前 k个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例 1:输入: words ["i"…

【异常】记一次因scripts编写错误导致无法正常build的问题

一、npm 与 scripts之间的关系 Node 开发离不开 npm,而脚本功能是 npm 最强大、最常用的功能之一。 npm 允许在package.json文件里面,使用scripts字段定义脚本命令。 比如以下: "scripts": {"dev": "vue-cli-se…

【C++】引用详解

作者:阿润菜菜 专栏:C 🏃🏃🏃🏃🏃🏃 本文目录 概念及用法 特性 使用场景 1.做参数 2. 做返回值 从函数栈帧角度理解引用 传值、传引用效率比较 引用和指针的区别 概念及用法 引…

洛谷 P1194 买礼物 (图论 最小生成树)

鸽了好几天了今天写个洛谷的题解 题目描述 又到了一年一度的明明生日了,明明想要买 BB 样东西,巧的是,这 BB 样东西价格都是 AA 元。 但是,商店老板说最近有促销活动,也就是: 如果你买了第 II 样东西&#…