图中曲线之间的阴影区域

2023-12-04

因此,我有几条由相同 x 值但不同 y 值定义的曲线。下图由 21 条不同的曲线组成。其中 10 条是虚线,1 条是实线,最后 10 条是虚线。

然而,如图所示,它在一张图表中相当多。你无法真正看到到处是什么。所以我想要的是在前 10 行和最后 10 行之间有一个阴影区域,我认为这会让眼睛更舒服。

但我不太确定如何开始?

现在我的代码如下:

import os
import numpy as np
import matplotlib.pyplot as plt

structures = ['Rectum']
patients = ["426"]

color_map = 'nipy_spectral'
color = {'PTV':0.16, 'Rectum':0.80, 'Bladder':0.96}

legends = ['PTV', 'Rectum', 'Bladder']

x = np.loadtxt('dose_gy.txt')


for plot, patient in enumerate(patients):
    plot += 1
    PATH_TO_YDATA = 'results/Two_Fields/DVH'
    for f in sorted(os.listdir(PATH_TO_YDATA), key=lambda f: f.split('_')[-2]):
        if f.split('_')[-2] == patient:
            for structure in structures:
                if f.split('_')[2] == structure:
                    y = np.loadtxt(PATH_TO_YDATA + '/' + f)
                    plt.axis([0, 90, 0, 50])
                    if int(f.split('_')[-1][:-4]) < 90:
                        plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='dotted', alpha=0.8, linewidth=2.0)
                    elif int(f.split('_')[-1][:-4]) > 90:
                        plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='dashed', alpha=0.8, linewidth=2.0)
                    elif int(f.split('_')[-1][:-4]) == 90:
                        plt.plot(x, y * 100, color=plt.get_cmap(color_map)(color[structure]), linestyle='solid', alpha=1.0, linewidth=3.0, zorder=1000)
    plt.title('Patient ' + str(plot))
    plt.xlabel("Dose [Gy]", fontsize=14)
    plt.ylabel("Volume [%]", fontsize=14)


plt.show()

enter image description here


为了填充多条曲线的最小值和最大值之间,您需要确定表示曲线上每个点的最小值或最大值的数组。如果所有曲线共享相同的 x 值,则可以通过沿组合 y 值的一个轴取最小值来轻松完成此操作。例如。

np.min(np.c_[y1, y2, y3, ...], axis=1)

最大值相同。然后fill_between可以与这些组合数组一起用作输入。

一个完整的例子:

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(4)

# generate some data to plot
x = np.linspace(0.8,10,201)
f = lambda x, p1,p2,p3,p4: p1/x + np.sinc(x*p4)*p3 + p2
Y = np.empty((len(x), 9))
P1 = 1.5+ (np.random.normal(size=9)-0.5)*0.2
P2 = np.linspace(0.9,1.1, 9)
P3 = 1+ (np.random.normal(size=9)-0.5)*0.2
P4 = np.linspace(0.9,1.1, 9)+ (np.random.normal(size=9)-0.5)
for i in range(9):
    Y[:,i] = f(x,P1[i], P2[i], P3[i], P4[i])

# plot    
fig, ax = plt.subplots()

style= [":"]*4 + ["-"] + ["--"]*4
colors = ["crimson"]*4 + ["k"] + ["#9a0bad"]*4
lw = np.ones(9); lw[4] = 2
for i in range(9):
    ax.plot(x,Y[:,i], linestyle=style[i], label="curve "+str(i), lw=lw[i], color=colors[i])

Y1min = np.min(Y[:,:4], axis=1)
Y1max = np.max(Y[:,:4], axis=1)
Y2min = np.min(Y[:,5:], axis=1)
Y2max = np.max(Y[:,5:], axis=1)

ax.fill_between(x, Y1max, Y1min, color="crimson", alpha=0.4)
ax.fill_between(x, Y2max, Y2min, color="#9a0bad", alpha=0.4)

plt.show()

enter image description here

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

图中曲线之间的阴影区域 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • Argparse nargs="+" 正在吃位置参数

    这是我的解析器配置的一小部分 parser add argument infile help The file to be imported type argparse FileType r default sys stdin parser
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 为什么Python的curses中escape键有延迟?

    In the Python curses module I have observed that there is a roughly 1 second delay between pressing the esc key and getc
  • 以同步方式使用 FastAPI,如何获取 POST 请求的原始正文?

    在中使用 FastAPIsync not async模式 我希望能够接收 POST 请求的原始 未更改的正文 我能找到的所有例子都显示async代码 当我以正常同步方式尝试时 request body 显示为协程对象 当我通过发布一些内容来
  • 使用 Python pandas 计算调整后的成本基础(股票买入/卖出的投资组合分析)

    我正在尝试对我的交易进行投资组合分析 并尝试计算调整后的成本基础价格 我几乎尝试了一切 但似乎没有任何效果 我能够计算调整后的数量 但无法获得调整后的购买价格有人可以帮忙吗 这是示例交易日志原始数据 import pandas as pd
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 对图像块进行多重处理

    我有一个函数必须循环遍历图像的各个像素并计算一些几何形状 此函数需要很长时间才能运行 在 24 兆像素图像上大约需要 5 小时 但似乎应该很容易在多个内核上并行运行 然而 我一生都找不到一个有据可查 解释充分的例子来使用 Multiproc
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 迭代 my_dict.keys() 并修改字典中的值是否会使迭代器失效?

    我的例子是这样的 for my key in my dict keys my dict my key mutate 上述代码的行为是否已定义 假设my dict是一本字典并且mutate是一个改变其对象的方法 我担心的是 改变字典中的值可能
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x

随机推荐

  • Ada 中的信号量

    我得到了以下代码并要求实现一个信号量 with Ada Text IO use Ada Text IO with Id Dispenser with Semaphores use Semaphores procedure Philos is
  • 如何从视图/父/子结构扩展 jade 布局?

    我的视图结构如下 我想将layout jade扩展到我的用户文件夹下的所有jades 在用户文件夹下的文件中执行 extends layout 不起作用 没有太多关于扩展布局的文章对此进行讨论 Express 允许这种扩展吗 extends
  • 如何将函数映射到三重嵌套列表并保持三重嵌套列表完整?

    我一直在为我的博士学位构建一个分析工作流程 并一直使用三重嵌套列表来表示我的数据结构 因为我希望它能够在第二层和第三层扩展到任意数量的数据 第一级是整个数据集 第二级是数据集中的每个主题 第三级是每个主题的每个度量的一行 dataset s
  • 如何在Python中检测PDF文档中的旋转页面?

    给定一个多页 PDF 文档 如何检查给定页面是否旋转 90 90 或 180 最好使用 Python pdfminer pyPDF 更新 页面是扫描的 大部分页面都是由文本组成的 我简单地用过 Rotate页面的属性在PyPDF2 pdf
  • 闪亮应用程序中的“重置输入”按钮

    我想在我闪亮的应用程序中实现 重置输入 按钮 这是一个只有两个输入的示例 我使用更新函数将值设置回默认值 library shiny runApp list ui pageWithSidebar headerPanel Reset inpu
  • 我无法使用函数在字符串内加倍字符

    我正在尝试创建一个简单的函数 将字符串内的字符加倍并输出新字符串 前任 hello world 将变成 hheelloo wwoorrlldd 但是 使用我编写的函数 输出为空 如果有人能告诉我这是为什么 我将不胜感激 谢谢你 using
  • PHP中获取文件名

    如何在 PHP 中获取文件名 我想要做的是让一个函数接受文件名的字符串 然后如果它实际上在页面上则执行一些操作 function onThisPageFunction fileNameFromFunction if onThisPage f
  • 允许在一跳中完全绑定任何 6 元组模式的最小索引集是什么?

    我正在尝试在wiredtiger 之上构建一个六元组商店 元组可以描述如下 graph subject predicate object alive transaction 数据库中存储的每个元组都是唯一的 查询与常规 SPARQL 查询类
  • 尝试安装 EF Core 和针对 .Net 4.6.1 的可移植类库

    这是我第一次使用 VS2015 尝试 EF Core ASP Net Core 和可移植类库 公平地说我很沮丧 我想创建一个可以安装 EntityFramework Core 的库 该库需要在 WPF 应用程序和 ASP NET Core
  • jQuery 无法在 Rails 3.2.8 上运行

    我在 Rails 3 2 8 上使用 jQuery 时遇到问题 我已经安装了 jquery rails gem 我的 application js 具有以下内容 require jquery require jquery ujs requi
  • 我想使用 Node js 将 postman 文件转换为 openAPI 3.0 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 您能帮我将 Postman 文件转换为 openAPI 3 0 并将它们下载到机器吗 这必须在 Node js 中实现 我对此非常陌生 Thanks 我认为你可以使用这个 npm
  • 使用 document.getElementById 设置输入值并未真正设置该值

    我有一个输入
  • odeint 流观察者及相关问题

    我有一个由 4 个耦合方程组成的系统需要求解 并且有一个参数 Gamma i 需要迭代 由于我对 C 很陌生 所以我的代码非常初级 如果它在某些部分看起来复杂而优雅 那只是因为我改编了odeint作者的代码 这个问题与 http stack
  • 从 Django DateTimeField 查找相对日期

    model class MyClass models Model car models ForeignKey Car date models DateTimeField auto now True auto now add True sql
  • 为什么 Redux 中的异步流程需要中间件?

    根据文档 没有中间件 Redux store 只支持同步数据流 我不明白为什么会这样 为什么容器组件不能调用async API 然后dispatch行动 例如 想象一个简单的 UI 一个字段和一个按钮 当用户按下按钮时 该字段将填充来自远程
  • 需要一些关于汇编语言中的 LEAVE 指令的解释

    我没有清楚地理解 LEAVE 函数 它是这两条指令的浓缩 MOV ESP EBP POP EBP So MOV ESP EBP将 ESP 向下移动到 EBP 的级别 堆栈的开头 Then POP EBP 移动 ESP 指向的值并将其影响到
  • Java JList模型

    我怎样才能从一个列表模型JList为了能够将项目插入其中 我想用这个方法 addElement java lang Object item 我找到了一个解释here 但问题是ListModel是一个接口 即使我编写了一个实现并重写了它的方法
  • 为什么 Object[].class.isAssignableFrom(String[].class) == true ?

    Why is Object class isAssignableFrom String class true while String getSuperClass or getGenericInterfaces 无法得到Object 我检查
  • 为什么“npm install git repo url”会重写package-lock.json?

    我正在运行npm install在公共 GitHub 上repo并且它已将快车锁定在4 17 0 in package lock json文件这是正确的行为package lock json file 但是 当我执行npm install
  • 图中曲线之间的阴影区域

    因此 我有几条由相同 x 值但不同 y 值定义的曲线 下图由 21 条不同的曲线组成 其中 10 条是虚线 1 条是实线 最后 10 条是虚线 然而 如图所示 它在一张图表中相当多 你无法真正看到到处是什么 所以我想要的是在前 10 行和最