在 matplotlib 中实现水平图

2024-03-07

我正在尝试在 matplotlib 中实现地平线图(请参阅:http://square.github.com/cubism/ http://square.github.com/cubism/)

基本思想是,您以窄长宽比显示时间序列,并且随着值的增加(超出 y 轴限制),它们从底部开始以较暗的颜色返回(想想旧的 Atari 游戏,当您去越过屏幕顶部并在底部弹出)。

我的基本方法是将 y 数据划分为卡盘,并使用以下方法在新轴上绘制每个垂直组ax.twinx()并适当设置限制。

仅对于正面或负面数据,这似乎效果很好。

积极的:

消极的:

但由于某种原因,两件事都搞砸了:

# setup the environment
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, np.pi*4, 137)
y = (2*np.random.normal(size=137) + x**2)

# reflect everything around the origin
xx = np.hstack([-1*x[::-1], x])
yy = np.hstack([-1*y[::-1], y])

# function to do the plot
def horizonPlot(ax, x, y, nfolds=3, inverty=False, color='CornflowerBlue'):
    axes = [ax]
    if inverty:
        ylims = np.linspace(y.min(), y.max(), nfolds + 1)[::-1]
    else:
        ylims = np.linspace(y.min(), y.max(), nfolds + 1)

    for n in range(1, nfolds):
        newax = axes[-1].twinx()
        axes.append(newax)

    for n, ax in enumerate(axes):        
        ax.fill_between(x, y, y2=ylims[n], facecolor=color, alpha=1.0/nfolds, zorder=n)
        ax.set_ylim([ylims[n], ylims[n+1]])
        ax.set_yticklabels([])
        ax.set_yticks([])

        if inverty:
            ax.invert_yaxis()

    ax.set_xlim([x.min(), x.max()])
    return fig

fig, baseax = plt.subplots(figsize=(6.5,1.5))
posax = baseax.twinx()
negax = posax.twinx()
fig = horizonPlot(posax, xx, np.ma.masked_less(yy, 0), inverty=False, color='DarkGreen')
fig = horizonPlot(negax, xx, np.ma.masked_greater(yy, 0), inverty=True,   color='CornflowerBlue')
for ax in fig.get_axes():
    ax.set_yticklabels([])

fig.tight_layout()
plt.show()

糟糕的图表(注意正面缺乏多层):

任何想法将不胜感激!


我实际上不知道为什么你的不工作,因为在我的电脑上它工作正常。但由于我对这个绘图真的很感兴趣,所以我尝试自己实现它,而不需要所有这些花哨的东西twinx stuff.

我只是将这些区域绘制在彼此之上,因为这实际上是该图的伟大之处。因此我不需要调整 alpha,它们只是相加。

import numpy as np
from matplotlib.pyplot import *

def layer(y,height):
    neg=0.0;pos=0.0
    if y>0:
        if y-height>=0:
            pos=height
            y-= pos
        else : 
            pos = y
    elif y<0:
        if y+height<=0:
            neg=height
            y += neg
        else : 
            neg = -y
    return pos,neg

def horizonPlot(x,y,height=50.0,colors=['CornflowerBlue','DarkGreen']):
    alpha = .10
    vlayer = np.vectorize(layer)
    while (y != 0).any():
        l = vlayer(y,height)
        y -= l[0];y += l[1]
        fill_between(x,0,l[0],color=colors[0], alpha=alpha)
        fill_between(x,height-l[1],height,color=colors[1], alpha=alpha)

def main():
    x = np.linspace(0, np.pi*4, 137)
    y = (2*np.random.normal(size=137) + x**2)
    xx = np.hstack([-1*x[::-1], x])
    yy = np.hstack([-1*y[::-1], y])
    horizonPlot(xx,yy)
    show()

在我的机器上看起来如下所示。希望它对你有用,但我只使用基本的绘图方法。

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

在 matplotlib 中实现水平图 的相关文章

  • 如果 Excel 文件是由程序创建的,Pandas read_excel 对于具有简单公式的单元格返回 nan [重复]

    这个问题在这里已经有答案了 I use pd read excel读取由以下命令创建的 excel 文件openpyxl并从一个网址下载 解析后的数据框将给出nan如果单元格值是公式 which formula is simply 100
  • 通过 python 中的另外两个修改数组[重复]

    这个问题在这里已经有答案了 假设我们有三个一维数组 A 长度为 5 B 长度相同 示例中为5 C 更长 比如长度为 100 C最初用零填充 A给出索引C应更改的元素 它们可能会重复 以及B给出应添加到初始零的值C 例如 如果A 1 3 3
  • 键入的完整命令行

    我想获得输入时的完整命令行 This join sys argv 在这里不起作用 删除双引号 另外 我不想重新加入已解析和拆分的内容 有任何想法吗 你太迟了 当键入的命令到达 Python 时 您的 shell 已经发挥了它的魔力 例如 引
  • 如何计算数据框中按另一列的列值分组的一列的连续字符串值?

    我有以下数据框 Levels Labels Confidence 0 Hands 0 8 0 Leg 0 7 0 Eye 0 9 1 Ear 0 9 1 Eye 0 8 2 Hands 0 9 2 Eye 0 8 3 Eye 0 8 我想检
  • 将 Python Pandas DataFrame 写入 Word 文档

    我正在努力创建一个使用 Pandas DataFrames 的 Python 生成的报告 目前我正在使用DataFrame to string 方法 但是 这会作为字符串写入文件 有没有办法让我实现这一目标 同时将其保留为表格 以便我可以使
  • Python - Unicode 到 ASCII 的转换

    我无法在不丢失数据的情况下将以下 Unicode 转换为 ASCII u ABRA xc3O JOS xc9 I tried encode and decode他们不会这么做 有人有建议吗 Unicode 字符u xce0 and u xc
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • 为什么将模块级代码放入函数中然后调用该函数在Python中速度更快?

    在亚历克斯 马尔泰利的回应中使 Python 脚本面向对象 https stackoverflow com questions 1813117 making a python script object oriented 他提到在 Pyth
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • Python 读取未格式化的直接访问 Fortran 90 给出不正确的输出

    这是数据的写入方式 它是一个二维浮点矩阵 我不确定大小 open unit 51 file rmsd nn output form unformatted access direct status replace recl Npoints
  • 如何使用 enumerate 来倒数?

    letters a b c 假设这是我的清单 在哪里for i letter in enumerate letters 将会 0 a 1 b 2 c 我怎样才能让它向后枚举 如 2 a 1 b 0 c 这是一个很好的解决方案并且工作完美 i
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error

随机推荐

  • 基于两列对多维数组中的数据进行分组

    我有一个关联数组的索引数组 如下所示 brand gt ABC model gt xyz size gt 13 brand gt QWE model gt poi size gt 23 brand gt ABC model gt xyz s
  • 向 JFrame 添加新的 WindowListener

    mainFrame addWindowListener new WindowListener Override public void windowClosing WindowEvent e if JOptionPane showConfi
  • 在 aspx 文件中使用内联代码设置文字文本

    在 ASP NET 项目中 我有一个文字 为了设置文本属性 我使用了以下代码
  • 在现实生活中的示例中,何时使用后减/增量与前减/增量? [复制]

    这个问题在这里已经有答案了 可能的重复 如果该值未在语句中的其他任何地方使用 为什么要使用 i 而不是 i https stackoverflow com questions 1392820 why use i instead of i i
  • Linux 内核:获取符号链接背后的真实路径

    我正在研究一些 Linux 内核的东西 我有一个名为 dev blah whatever 的假路径 它指向 dev block real device 问题是lookup bdev将无法遵循符号链接 因此我想通过获取真实路径 dev blo
  • Python CSV 没有属性“Writer”

    有一些代码给我带来了麻烦 它在我的另一个脚本中运行得很好 但我一定把它搞砸了 The if csv 主要是因为我依赖于 argparser 中的 csv 选项 但即使我要在外面运行这个适当的缩进if statement 它仍然返回相同的错误
  • 我可以强制刷新 Facebook 对象的图像 URL 吗?

    我有几个由 Facebook 托管的对象 这些对象已发布到用户的活动日志中 图像的 URL 指向我们的内容交付解决方案 该解决方案重定向到版本化图像 这意味着 URL 可以保持不变 但图像可能会发生变化 正如你在这张图片中看到的 当图像更改
  • CSS 属性开头的 *+ 是什么意思? [复制]

    这个问题在这里已经有答案了 我在 CSS 声明代码中发现了这一点 我现在部分负责 margin 0 0 0 10px margin 4px 0 0 10px margin 3px 0 0 10px 0 the and 0 是我特别关注的 这
  • 为什么 FoldBack 的签名与 F# 中的 Fold 有如此大的不同?

    至少有两件事我不明白 从左侧折叠到右侧折叠的重构不仅需要在签名上进行大量更改 而且在每个地方都需要进行大量更改 具体取决于文件夹功能 没有办法在不翻转参数的情况下将其链接到列表 List foldBack T gt State gt Sta
  • C# 使用通配符复制多个文件并保留文件名

    我需要使用不包含完整信息的文本文件从目录复制多个文件 NCR txt Red 目标目录中有 红1 txt红3 txt红44 txt dest 目录需要有 红1 txt红3 txt红44 txt 我的代码 System IO Director
  • 组内的 Nexus REST API 查询工件

    我有一个 Nexus maven 存储库 我想利用 REST API 来查询我的特定组中的工件列表 我偶然发现了这个文档 但它似乎非常简洁 我找不到我需要的东西 https oss sonatype org nexus restlet1x
  • 使用 Keras 创建自定义条件指标

    我正在尝试使用 keras 为我的神经网络创建以下指标 自定义 Keras 指标 https i stack imgur com fSg0o png 其中 d y pred y true y pred 和 y true 都是向量 使用以下代
  • 在 Pipeline sklearn (Python) 中使用多个自定义类

    我尝试为学生做一个关于 Pipeline 的教程 但我阻止了 我不是专家 但我正在努力改进 所以谢谢你的包容 事实上 我尝试在管道中执行几个步骤来为分类器准备数据帧 第 1 步 数据框的描述 第 2 步 填充 NaN 值 第 3 步 将分类
  • 从hosts文件中获取主机名

    我想从我的模板中获取另一台主机 鉴于以下情况hosts file vm vm hostname monitoring monitoring hostname 我怎样才能访问monitoring hostname从模板 I tried mon
  • 如何使用 jpa/hibernate 在 playframework 子模块中保存模型实体

    我在 PLAY FRAMEWORK 中有一个项目 其中包含几个子模块 每个子模块都有这样的文件夹结构 app controllers models views conf submodulename routes build sbt 我想将所
  • FFMpeg 错误 av_interleaved_write_frame():

    这是我的代码 运行php代码后 FFmpeg version 0 5 Copyright c 2000 2009 Fabrice Bellard et al configuration prefix usr libdir usr lib s
  • ASP.NET 的密码强度控制

    我需要 ASP NET 的密码强度控制 我查看了ajax控制工具包中的控制 但它不是完全可配置的 我需要将它静态地放置在布局上 尝试使用谷歌 Google 密码强度 APIhttp www codeproject com KB ajax G
  • MVC3 - 文件下载 - 等待状态指示器

    好的 我已经完成了作业并发现了类似的线程 然而 我还没有找到好的答案 使用 MVC3 C Razor 视图引擎 我的场景非常简单 我有一个带有调用控制器上的操作的链接的视图 该操作返回动态生成的文件 该过程持续 1 到 10 秒 在此期间
  • 使用 linq 查询输出列表/其他数据结构

    有没有办法在通用集合上执行 Console WriteLine 例子 列表 a 有 a Key 0 apple a Value 0 1 a Key 1 bold a Value 2 2 有没有办法使用 LINQ 写出列表内容 键 值 a a
  • 在 matplotlib 中实现水平图

    我正在尝试在 matplotlib 中实现地平线图 请参阅 http square github com cubism http square github com cubism 基本思想是 您以窄长宽比显示时间序列 并且随着值的增加 超出