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使用的一个注意点的更多相关文章

  1. iconv 中文截断问题的解决方法

    GB2312 转换为 UTF-8 <?php $content = iconv('GB2312', 'UTF-8', $content); // $content为字符串 ?> iconv ...

  2. OD 实验(十三) - 对一个程序的逆向

    程序: 运行程序 点击 Start,它就会进行对系统的扫描 点击 About -> Enter Registration Code 随便输入一下内容,点击 OK,会弹出该弹窗 用 PEiD 看一 ...

  3. SQL Server存储ntext截断问题

    SQL Server存储ntext截断问题   最近遇到一个问题:将大文本存储到数据库的时候,查询出来的文本却被截断了. 最后百度发现,作者提出 sql server management studi ...

  4. WGAN (原理解析)

    在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wasserstein GAN>却在Reddit的Machine Learning频道火了,连Goodfel ...

  5. Wasserstein GAN

    在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wasserstein GAN>却在Reddit的Machine Learning频道火了,连Goodfel ...

  6. 深度学习-Wasserstein GAN论文理解笔记

    GAN存在问题 训练困难,G和D多次尝试没有稳定性,Loss无法知道能否优化,生成样本单一,改进方案靠暴力尝试 WGAN GAN的Loss函数选择不合适,使模型容易面临梯度消失,梯度不稳定,优化目标不 ...

  7. php字符串操作集锦

    web操作, 主要就是对字符文本信息进行处理, 所以, 字符串操作几乎占了很大一部分的php操作.包括 注意strstr 和 strtr的区别? 前者表示字符串查找返回字符串,后者表示字符串中字符替换 ...

  8. bzoj1835[ZJOI2010]base基站选址

    据说正解是什么线段树优化DP,但是作为脑子有坑选手,我们需要5k的做法: 主席树+决策单调性..... F[m][i]表示已经放置了m个基站,第m个基站放置在第i个村庄,第i个村庄及之前的村庄的总最少 ...

  9. 强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  10. -Three.js开发指南---用three.js创建你的第一个三维场景(第一章)

    本章主要做了下面的工作 1 生成一个简单的场景,该场景的物体只有平面和坐标轴 2 在第一个demo的基础上添加光源和方块物体,并生成阴影 3 在第二个demo的基础上,增加动画,使得方块进行旋转 4 ...

随机推荐

  1. unity踩坑集锦

    1.AB包加载,如果项目没有这个tag,那么就匹配不上,和代码一样.2.unity打包安卓topbar想显示出来怎么做?:不渲染安全区域外  3. unity编辑器报错 : Expanding inv ...

  2. winform导出excel报'object' does not contain a definition for 'get_Range'的问题

    现手上有个老项目采用.net framework3.0开发,改成4.0后,excel导出报'object' does not contain a definition for 'get_Range'的 ...

  3. 【Flutter】环境搭建(Windows+Android Studio 3.6.1)

    最近参加的项目需要用到Flutter框架进行iOS/Android双端开发,然而第一步环境搭建的过程就忙活了一整个晚上,直到现在终于有时间静下心来整理一下搭建过程中遇到的困难. 0x00 Flutte ...

  4. TP5中redirect实现重定向及带参数跳转

    1.控制器 重定向url传参 try{ $result = Db::name('wupin')->insert($ist); if($result){ $this->redirect(ur ...

  5. 微信开发 回复用户消息 .net C#

    前段时间开发了公司的微信 这里做个知识总结分享下经验,望一起学习..... 感觉后面写个系列的最好了 .... 企业需求: 给指定企业用户发送消息:如考勤信息. 企业通知.个人信息推送等等, /// ...

  6. linux 打包各种后缀的命令

    01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...

  7. LP两阶段法(一阶段)

    \begin{equation}\begin{aligned}\min \quad & z=\mathbf{c}^{T} \mathbf{x} \\\text { s.t. } & \ ...

  8. React16下报错引发整个页面crash的解决方法

    如果报错没有没有被catch,将会引起整个React组件树的unmounting 解决方法:在生命周期中增加componentDidCatch https://reactjs.org/blog/201 ...

  9. Win10安装curl

    参看博客:https://blog.csdn.net/qq_37289115/article/details/106665123

  10. void关键字

    在C++中,void表示为无类型,主要有三个用途: (1)函数的 返回值用void,表示函数没有返回值. void func(int a, int b) { //函数体代码 return; } (2) ...