使用 LinearNDInterpolator (Python) 绘制插值

2024-01-18

我使用以下脚本对某些 (x, y, z) 数据使用 LinearNDInterpolator。但是,我不知道如何从插值数据到以热图形式绘制/显示插值?我是否遗漏了一些东西,比如根据 x 和 y 的最小值和最大值设置网格网格?任何帮助或例子都会很棒!

import numpy as np
import scipy.interpolate

x = np.array([-4386795.73911443, -1239996.25110694, -3974316.43669208,
               1560260.49911342,  4977361.53694849, -1996458.01768192,
               5888021.46423068,  2969439.36068243,   562498.56468588,
               4940040.00457585])

y = np.array([ -572081.11495993, -5663387.07621326,  3841976.34982795,
               3761230.61316845,  -942281.80271223,  5414546.28275767,
               1320445.40098735, -4234503.89305636,  4621185.12249923,
               1172328.8107458 ])

z = np.array([ 4579159.6898615 ,  2649940.2481702 ,  3171358.81564312,
               4892740.54647532,  3862475.79651847,  2707177.605241  ,
               2059175.83411223,  3720138.47529587,  4345385.04025412,
               3847493.83999694])

# Create coordinate pairs
cartcoord = zip(x, y)

# Interpolate
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, z)

编辑: 基于@Spinor的解决方案,并使用Python 2.7,以下代码给出了我正在寻找的内容(方法1)。有没有办法增加插值点的密度?

The dataset yields the following plot: enter image description here

不用说,我没想到结果是圆形的,因为(纬度,经度)坐标是从等矩形投影图获取的。经过进一步调查,我认为这只是映射在不同的投影 https://upload.wikimedia.org/wikipedia/commons/a/a6/Stereographic_projection_SW.JPG.


我假设您正在尝试插入 z 的值。

现在,当您调用插值函数时会发生什么?它创建了输入(x 和 y)和输出(z)的整个景观。在上面的代码中,您在任何时候都没有真正询问它的值。要使用此函数,您需要指定输入,它将为您提供插值输出。

您使用了函数 scipy.interpolate.LinearNDInterpolator,该函数是通过对输入数据进行三角测量并在每个三角形上执行线性重心插值来构造的。根据您的输入,可能有一些区域会出现这种情况,您会得到 Nan。例如,在您的代码中尝试这个

print interp(-4386790, 3720137)

这在 x 和 y 的最小值-最大值的范围内。如果您可以接受,我们可以通过 fill_value 参数将 Nan 设置为零。

阅读文档。通常人们可能会发现以下函数也可以接受:scipy.interpolate.interp2d。它使用样条插值代替。在下面的代码中,我实现了这两个函数(前者的 nan 值设置为 0)并将它们绘制在热图上。

至于热图,正如你所怀疑的那样。您必须创建一个值网格。下面是我的 LinearNDInterpolator 的输出图,其中 nan 设置为零和 interp2d 以及代码。

Using LinearNDInterpolator(cartcoord, z, fill_value=0) enter image description here

Using interp2d(x, y, z) enter image description here

附:我正在使用Python3。如果您在 Python2 中遇到问题,请从 cartcoord = list(zip(x, y)) 中删除列表。

import matplotlib.pyplot as plt
import numpy as np
import scipy.interpolate

x = np.array([-4386795.73911443, -1239996.25110694, -3974316.43669208,
               1560260.49911342,  4977361.53694849, -1996458.01768192,
               5888021.46423068,  2969439.36068243,   562498.56468588,
               4940040.00457585])

y = np.array([ -572081.11495993, -5663387.07621326,  3841976.34982795,
               3761230.61316845,  -942281.80271223,  5414546.28275767,
               1320445.40098735, -4234503.89305636,  4621185.12249923,
               1172328.8107458 ])

z = np.array([ 4579159.6898615 ,  2649940.2481702 ,  3171358.81564312,
               4892740.54647532,  3862475.79651847,  2707177.605241  ,
               2059175.83411223,  3720138.47529587,  4345385.04025412,
               3847493.83999694])

# Create coordinate pairs
cartcoord = list(zip(x, y))


X = np.linspace(min(x), max(x))
Y = np.linspace(min(y), max(y))
X, Y = np.meshgrid(X, Y)

# Approach 1
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, z, fill_value=0)
Z0 = interp(X, Y)
plt.figure()
plt.pcolormesh(X, Y, Z0)
plt.colorbar() # Color Bar
plt.show()

# Approach 2
func = scipy.interpolate.interp2d(x, y, z)
Z = func(X[0, :], Y[:, 0])
plt.figure()
plt.pcolormesh(X, Y, Z)
plt.colorbar() # Color Bar
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 LinearNDInterpolator (Python) 绘制插值 的相关文章

  • 如何恢复tensorflow inceptions检查点文件(ckpt)?

    I have inception resnet v2 2016 08 30 ckpt文件是预先训练的初始模型 我想使用恢复这个模型 saver restore sess ckpt filename 但为此 我将需要编写训练该模型时使用的变量
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • NLTK 2.0分类器批量分类器方法

    当我运行此代码时 它会抛出一个错误 我认为这是由于 NLTK 3 0 中不存在batch classify 方法 我很好奇如何解决旧版本中的某些内容在新版本中消失的此类问题 def accuracy classifier gold resu
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • 为什么一旦我离开内置的运行服务器,Django 就无法找到我的管理媒体文件?

    当我使用内置的简单服务器时 一切正常 管理界面很漂亮 python manage py runserver 但是 当我尝试使用 wsgi 服务器为我的应用程序提供服务时django core handlers wsgi WSGIHandle
  • 未知错误:Chrome 无法启动:异常退出

    当我使用 chromedriver 对 Selenium 运行测试时 出现此错误 selenium common exceptions WebDriverException Message unknown error Chrome fail
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • 当字段是数字时怎么说...在 mongodb 中匹配?

    所以我的结果中有一个名为 城市 的字段 结果已损坏 有时它是一个实际名称 有时它是一个数字 以下代码显示所有记录 db zips aggregate project city substr city 0 1 sort city 1 我需要修
  • 如何将 ascii 值列表转换为 python 中的字符串?

    我在 Python 程序中有一个列表 其中包含一系列数字 这些数字本身就是 ASCII 值 如何将其转换为可以在屏幕上回显的 常规 字符串 您可能正在寻找 chr gt gt gt L 104 101 108 108 111 44 32 1
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • python 中的“槽包装器”是什么?

    object dict 和其他地方的隐藏方法设置为这样的
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视

随机推荐

  • 一个简单的闰年逻辑问题

    public class LeapYear public static void main String args int year Integer parseInt args 0 boolean isLeapYear divisible
  • Android FirebaseRecyclerAdapter populateViewHolder() 永远不会被调用

    我有一个如下所示的 firebase 数据结构 我正在尝试使用 FirebaseRecyclerAdapter 加载此数据 问题是 populateViewHolder 没有被调用 对数据库结构的引用有效 我可以使用 FriendsRef
  • 无法在未调用 Looper.prepare() 的线程内创建处理程序 [xamarin]

    所以我实际上没有问题 因为我已经解决了它 但如果其他人遇到这个问题 有一个简洁的解决方案总是好的 虽然有很多 Can t create handler inside thread which has not called Looper pr
  • Android 兼容包和 getLoaderManager()

    安卓兼容包 http android developers blogspot com 2011 03 fragments for all html据说支持LoaderManager 如何获取 LoaderManager 的实例 Fragme
  • 如果Python中的单元格包含特定字符,如何为其着色?

    我正在处理一个数据框 来自 Excel 文件 我想格式化单元格 DF具有以下内容 作为示例 a b c 234 gt 500 200 gt 500 0 234 gt 500 400 6 66 34 1 我想将包含 gt 的单元格着色为红色
  • Python 3 - pickle 可以处理大于 4GB 的字节对象吗?

    基于此comment https stackoverflow com a 29704623 1202808以及参考文档 来自 Python 3 4 的 Pickle 4 0 应该能够 pickle 大于 4 GB 的字节对象 但是 在 Ma
  • 如何在 Django REST 框架 ViewSet 子类中使用分页?

    我有一个简单的子类viewsets ViewSet看起来像 from rest framework import viewsets from rest framework response import Response from mode
  • Angular2目标特定路由器出口

    我有一个应用程序 它有一个基本路由器插座 用作整个应用程序的基础 然后是一个子路由器出口 用户登录后使用该子路由器出口来显示由于单击基于基本路由器出口的导航链接而加载的任何组件 我希望在基本模板中单击导航链接时能够定位子路由器出口 当我单击
  • 如何在核心数据中存储 swift 枚举?

    Swift 允许您定义枚举 但核心数据不支持 开箱即用 如何保存它们 我在互联网上看到的推荐解决方案 迄今为止使用过 是使用私有变量 class ManagedObjectSubClass NSManagedObject enum Card
  • 查询数据库中的元组列表

    由于我是Python编程新手 所以我不太了解如何从数据库查询数据 首先 我在 SQL Server 中创建了数据库 其中包含 2 列 String列和Numeric column String Numeric One 1 Five 5 Th
  • 如何创建持久性 cookie 和非持久性 cookie?

    我似乎不知道如何创建持久性 cookie 和非持久性 cookie 例如 它们在发送回的 HTTP 标头方面有何不同 Cookie 有一个隐式或显式设置的到期日期 该日期控制它们的持续时间 取决于用户代理实际执行的情况 cookie 可能仅
  • C# 中的用户定义公式

    我有一个应用程序 用户可以为每个对象指定他自己的测量点 然后 这些测量值将用于将对象分类为 A 需要服务 B 服务应在 X 天内安排 C 不需要 ATM 服务 然而 这些对象几乎可以是任何东西 我们无法硬编码如何将测量值聚合到分类 我们需要
  • 编译器错误:“错误 CS0307:变量 'int' 不能与类型参数一起使用”

    如果我有以下代码 private void Check bool a bool b private void Check int a int b int c bool flag Check a lt b a gt flag c b 10 我
  • 如何使用H2数据库创建存储过程?

    有人尝试过使用 H2 数据库创建存储过程吗 要在 Java 函数中访问数据库 您确实需要连接 对于H2 有两种方式获得这样的连接 解决方案1 如果Java函数的第一个参数是ajava sql Connection 然后数据库提供连接 对于
  • 我们如何重命名 rpm 版本?

    我想将 rpm 文件的名称从 oldname 7 x86 64 rpm 更改为 newname 8 x86 64 rpm 我使用新名称创建了新的 rpm 但是当我尝试执行时 rpm Uvh newname 8 x86 64 rpm 它抛出以
  • 将 MS Word 2002 模板从 PC 转换为 Mac

    我必须转换数百个 MS Word 2002 模板 在 PC 上 才能在 Macintosh 上使用 我必须评估Word 模板是否可以在iWork Pages 和Mac 版Microsoft Word 中运行 我无法转换以下内容 Word V
  • Python PIL 检测图像是全黑还是全白

    使用 Python 成像库 PIL 如何检测图像的所有像素是黑色还是白色 Update 健康 状况 Not迭代每个像素 if not img getbbox 将测试图像是否是全黑的 Image getbbox 返回假值None如果图像中没有
  • C#——从 MySQL 检索数据并在不使用 DataGridView 的“页面”中对它们进行排序

    我是 C 编程新手 我正在开始创建一个应用程序 该应用程序通过 ProgressBars 显示 现实生活中 事件 何时到期 所有信息 有关这些事件的信息存储在数据库中 因此 打开与 my sql 数据库的连接我可以检索所有事件 问题是我不知
  • IsEnabled 时更改按钮图像

    我想在按钮时更改按钮图像IsEnabled False 下面是我的示例 当我将它们更改为时 绑定很好False True它仍然不起作用
  • 使用 LinearNDInterpolator (Python) 绘制插值

    我使用以下脚本对某些 x y z 数据使用 LinearNDInterpolator 但是 我不知道如何从插值数据到以热图形式绘制 显示插值 我是否遗漏了一些东西 比如根据 x 和 y 的最小值和最大值设置网格网格 任何帮助或例子都会很棒