plotly 坐标轴范围截断rangebreaks使用的一个注意点
plotly坐标轴截断混合设置且指定设置截断时间的时候需要注意先后顺序
- 大范围的时间要在小范围的时间前设置,比如日内时间的截断要设置在日期截断的后面
- 同范围的规则截断要在指定截断前设置,对日期的截断,规则系截断最好在指定截断前设置,六日截断规则在指定日期截断前
以上两条为测试出来的规律,具体细节尚未细究与验证
1.测试代码:绘制不设置坐标轴范围截断的图
df = df[['datetime', 'v']]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(tickformat="%H:%M\n%Y-%m-%d",)
先看不设置坐标轴范围截断的图
中间有大片没有数据的线,占据了大量空间,将数据形状挤压得看不出来

2.测试代码:绘制设置坐标轴范围截断的图,去除坐标轴中的无数据的空白的时间段
df = df[['datetime', 'v']]
数据时间序列 = pd.Series(df['datetime'].dt.date.unique())
全量时间序列 = pd.Series(pd.date_range(start=数据时间序列.min(), end=数据时间序列.max(), freq='D').date)
需要删除时间序列 = 全量时间序列[全量时间序列.isin(数据时间序列) == False].values
需要删除时间序列 = [i.strftime('%Y-%m-%d') for i in 需要删除时间序列]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(
tickformat="%H:%M\n%Y-%m-%d",
rangebreaks=[
dict(bounds=[6, 1], pattern='day of week'), # 设置周六周日截断,规则截断
dict(values=需要删除时间序列), # 补充截断一天中没有数据的日期,指定日期截断
dict(bounds=[11.6, 13.4], pattern="hour"), # 空白时间段,时间范围小于天
dict(bounds=[15.1, 20.9], pattern='hour'), # 空白时间段
dict(bounds=[23.1, 8.9], pattern='hour')] # 空白时间段
)
添加时间截断后,数据看起来就连贯了很多

3.测试代码:绘制设置坐标轴范围截断的图,去除坐标轴中的无数据的空白的时间段,但是将需要截断的时间设置在需要截断的日期前,这样会出现错误
df = df[['datetime', 'v']]
数据时间序列 = pd.Series(df['datetime'].dt.date.unique())
全量时间序列 = pd.Series(pd.date_range(start=数据时间序列.min(), end=数据时间序列.max(), freq='D').date)
需要删除时间序列 = 全量时间序列[全量时间序列.isin(数据时间序列) == False].values
需要删除时间序列 = [i.strftime('%Y-%m-%d') for i in 需要删除时间序列]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(
tickformat="%H:%M\n%Y-%m-%d",
rangebreaks=[
dict(bounds=[11.6, 13.4], pattern="hour"),
dict(bounds=[15.1, 20.9], pattern='hour'),
dict(bounds=[23.1, 8.9], pattern='hour'),
dict(bounds=[6, 1], pattern='day of week'),
dict(values=需要删除时间序列)
# 按照规则截断在指定日期截断后的顺序,画出来的图是空白
# dict(values=需要删除时间序列),
# dict(bounds=[6, 1], pattern='day of week'),
],
)
出现坐标轴重叠的现象,如下图
当调整周末代码在指定日期的代码后面的时候,画图甚至是空白的

plotly 坐标轴范围截断rangebreaks使用的一个注意点的更多相关文章
- iconv 中文截断问题的解决方法
GB2312 转换为 UTF-8 <?php $content = iconv('GB2312', 'UTF-8', $content); // $content为字符串 ?> iconv ...
- OD 实验(十三) - 对一个程序的逆向
程序: 运行程序 点击 Start,它就会进行对系统的扫描 点击 About -> Enter Registration Code 随便输入一下内容,点击 OK,会弹出该弹窗 用 PEiD 看一 ...
- SQL Server存储ntext截断问题
SQL Server存储ntext截断问题 最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studi ...
- WGAN (原理解析)
在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wasserstein GAN>却在Reddit的Machine Learning频道火了,连Goodfel ...
- Wasserstein GAN
在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wasserstein GAN>却在Reddit的Machine Learning频道火了,连Goodfel ...
- 深度学习-Wasserstein GAN论文理解笔记
GAN存在问题 训练困难,G和D多次尝试没有稳定性,Loss无法知道能否优化,生成样本单一,改进方案靠暴力尝试 WGAN GAN的Loss函数选择不合适,使模型容易面临梯度消失,梯度不稳定,优化目标不 ...
- php字符串操作集锦
web操作, 主要就是对字符文本信息进行处理, 所以, 字符串操作几乎占了很大一部分的php操作.包括 注意strstr 和 strtr的区别? 前者表示字符串查找返回字符串,后者表示字符串中字符替换 ...
- bzoj1835[ZJOI2010]base基站选址
据说正解是什么线段树优化DP,但是作为脑子有坑选手,我们需要5k的做法: 主席树+决策单调性..... F[m][i]表示已经放置了m个基站,第m个基站放置在第i个村庄,第i个村庄及之前的村庄的总最少 ...
- 强大的矩阵奇异值分解(SVD)及其应用
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...
- -Three.js开发指南---用three.js创建你的第一个三维场景(第一章)
本章主要做了下面的工作 1 生成一个简单的场景,该场景的物体只有平面和坐标轴 2 在第一个demo的基础上添加光源和方块物体,并生成阴影 3 在第二个demo的基础上,增加动画,使得方块进行旋转 4 ...
随机推荐
- 博弈论练习6 Deleting Divisors(sg找规律,思维)
题目链接在这里:G-Deleting Divisors_牛客竞赛博弈专题班组合游戏基本概念.对抗搜索.Bash游戏.Nim游戏习题 (nowcoder.com) 这道题一道比较明显的思路是使用sg函数 ...
- Leecode 206.反转链表(Java)
想法: 1.设链表长度为n,如5,头节点head,则最后一个元素位置为head-1. 错误,发现行不通,此为链表非数组,存储位置不连续 2.设两个指针p,q,让p,q指向head,再 ...
- Windhill获取团队角色、用户
//获取容器团队里的用户和角色,也可以获取容器团队里某一角色的用户 WTContainer pContainer = project.getContainer(); if (pContainer in ...
- 安装Win11需要网络才能下一步怎么跳过
1.先Shift+F10打开命令提示符 2.运行C:\Windows\System32\oobe\BypassNRO.cmd 3.自动重启来到联网这一步,多了一个没有网络的选项,进入.
- List<dto> 转List<map>
/** * list<DTO> 转 list<Map<String,Object>> * * @param list * @param <T> * @r ...
- js对象深拷贝方法
JSON.stringify()是目前前端开发过程中最常用的深拷贝方式, 原理是把有个对象序列化成为一个 JSON 字符串,将对象的内容转换成字符串的形式再保存到磁盘上, 再用 JSON.parse( ...
- Log4j日志框架使用
Log4j是Apache下的一款开源的日志框架,能够满足我们在项目中对于日志记录的需求.一般来讲,在项目中,我们会结合slf4j和log4j一起使用.Log4j提供了简单的API调用,强大的日志格式定 ...
- MySQL学习(十一)为什么不推荐使用uuid和雪花id
参考博客:https://www.cnblogs.com/wyq178/p/12548864.html 自增的主键的值是顺序的,所以Innodb把每一条记录都存储在一条记录的后面.当达到页面的最大填充 ...
- Spring Boot中如何优雅地实现异步调用?
前言 SpringBoot想必大家都用过,但是大家平时使用发布的接口大都是同步的,那么你知道如何优雅的实现异步呢? 这篇文章就是关于如何在Spring Boot中实现异步行为的.但首先,让我们看看同步 ...
- window身上的方法 弹出框/打开和关闭
window身上的方法内置函数 alert() parseInt() parseFloat() setInterval(); setTimeout(); clearTimeout(); clearIn ...