python中griddata_python – 来自xyz数据的Matplotlib轮廓:griddata无效索引[通俗易懂]

python中griddata_python – 来自xyz数据的Matplotlib轮廓:griddata无效索引[通俗易懂]我正在尝试使用具有以下格式的文件的matplotlib来绘制等高线图:x1y1z1x2y2z2等等我可以用numpy.loadtxt加载它来获取向量.到目前为止,没有麻烦.我读这个是为了学习如何绘图,并且可以通过复制粘贴来重现它,所以我确定我的安装没有错:我知道我必须输入x和y作为矢量,z作为数组输入,这可以用griddata完成.这也是我在这个网站上找到的.文件说:zi=gridda…

大家好,又见面了,我是你们的朋友全栈君。

我正在尝试使用具有以下格式的文件的matplotlib来绘制等高线图:

x1 y1 z1

x2 y2 z2

等等

我可以用numpy.loadtxt加载它来获取向量.到目前为止,没有麻烦.

我读这个是为了学习如何绘图,并且可以通过复制粘贴来重现它,所以我确定我的安装没有错:

我知道我必须输入x和y作为矢量,z作为数组输入,这可以用griddata完成.这也是我在这个网站上找到的.

文件说:

zi = griddata(x,y,z,xi,yi) fits a surface of the form z = f*(*x, y) to the data in the (usually) nonuniformly spaced vectors (x, y, z). griddata() interpolates this surface at the points specified by (xi, yi) to produce zi. xi and yi must describe a regular grid, can be either 1D or 2D, but must be monotonically increasing.

为了这个例子,我写了这段代码:

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.mlab as ml

x=np.linspace(1.,10.,20)

y=np.linspace(1.,10.,20)

z=np.linspace(1.,2.,20)

xi=np.linspace(1.,10.,10)

yi=np.linspace(1.,10.,10)

zi = ml.griddata(x,y,z,xi,yi)

但是,当涉及到griddata时,我收到以下错误:

IndexError:索引无效

所以,我试着修改一下doc的例子,如下所示:

from matplotlib.mlab import griddata

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(-2.1,2.1,300)

y = np.linspace(-2.1,2.1,300)

z = x*np.exp(-x**2-y**2)

# define grid.

xi = np.linspace(-2.1,2.1,100)

yi = np.linspace(-2.1,2.1,200)

# grid the data.

zi = griddata(x,y,z,xi,yi,interp=’linear’)

我得到了同样的错误.我不明白出了什么问题.

谢谢你的帮助.

解决方法:

考虑:

x = np.linspace(1., 10., 20)

y = np.linspace(1., 10., 20)

z = np.linspace(1., 2., 20)

这意味着我们知道沿x = y线的某些点的z值.

从那里,

zi = ml.griddata(x,y,z,xi,yi)

要求mlab.griddata推断矩形网格中所有点的z值.

我们已经提供了很多关于z如何沿着这条线变化的信息,但没有关于z如何在垂直方向上变化的信息(远离x = y线).由于mlab.griddata拒绝猜测,因此引发了错误.

如果您的初始x,y数据更随机分布,您将获得更好的结果:

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.mlab as ml

ndata = 10

ny, nx = 100, 200

xmin, xmax = 1, 10

ymin, ymax = 1, 10

# x = np.linspace(1, 10, ndata)

# y = np.linspace(1, 10, ndata)

x = np.random.randint(xmin, xmax, ndata)

y = np.random.randint(ymin, ymax, ndata)

z = np.random.random(ndata)

xi = np.linspace(xmin, xmax, nx)

yi = np.linspace(ymin, ymax, ny)

zi = ml.griddata(x, y, z, xi, yi)

plt.contour(xi, yi, zi, 15, linewidths = 0.5, colors = ‘k’)

plt.pcolormesh(xi, yi, zi, cmap = plt.get_cmap(‘rainbow’))

plt.colorbar()

plt.scatter(x, y, marker = ‘o’, c = ‘b’, s = 5, zorder = 10)

plt.xlim(xmin, xmax)

plt.ylim(ymin, ymax)

plt.show()

如果你想让mlab.griddata以任意方式沿着x = y线将数据外推到整个网格,你可以添加两个额外的边界点(xmin,ymax,z [0])和(xmax,ymin,z [ – 1]):

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.mlab as ml

np.random.seed(8)

ndata = 10

ny, nx = 100, 200

xmin, xmax = 1, 10

ymin, ymax = 1, 10

x = np.linspace(1, 10, ndata)

y = np.linspace(1, 10, ndata)

z = np.random.random(ndata)

x = np.r_[x,xmin,xmax]

y = np.r_[y,ymax,ymin]

z = np.r_[z,z[0],z[-1]]

xi = np.linspace(xmin, xmax, nx)

yi = np.linspace(ymin, ymax, ny)

# Requires installation of natgrid

# http://sourceforge.net/projects/matplotlib/files/matplotlib-toolkits/

zi = ml.griddata(x, y, z, xi, yi, interp=’nn’)

# Or, without natgrid:

# zi = ml.griddata(x, y, z, xi, yi, interp=’linear’)

plt.contour(xi, yi, zi, 15, linewidths = 0.5, colors = ‘k’)

plt.pcolormesh(xi, yi, zi, cmap = plt.get_cmap(‘rainbow’))

plt.colorbar()

plt.scatter(x, y, marker = ‘o’, c = ‘b’, s = 10, zorder = 10)

plt.xlim(xmin, xmax)

plt.ylim(ymin, ymax)

plt.show()

标签:python,matplotlib,interpolation

来源: https://codeday.me/bug/20191004/1851562.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141297.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言中strstr函数怎么实现_c语言strstr函数怎么写

    c语言中strstr函数怎么实现_c语言strstr函数怎么写首先,我们来看strstr函数的使用可见,strstr函数是用来查找字串的一个函数。因为字符串中有“cde”子串,所以代码运行起来结果就是”cdef”。现在,我们已经将strstr函数的作用大概了解了一下,下面开始函数的模拟实现。首先,在cplusplus中搜索strstr可以了解到她返回的类型及参数相关链接:strstr-C++Reference(cplusplus.com)接下来,我们分析实现思路直到s1到了下图的位置,两者相等当*s1==*s2时进入while循环,s1+

    2022年10月9日
  • Linux tar 打包排除某些文件夹[通俗易懂]

    Linux tar 打包排除某些文件夹[通俗易懂]场景想要将以前的程序打包下来,但是发现有log日志,而且比较大,有几G大。解决思路打包的时候,将某些文件夹给排除掉,只打包自己想要的文件。解决方法使用tar命令来进行打包,并使用-exclude这个参数来排除一个文件夹。如果存在多个排除文件夹,就要写多个参数。示例tar-zcvfscheduler_20180508.tar.gz–exclude=s…

    2022年5月29日
  • Java审计之命令执行篇

    Java审计之命令执行篇0x00前言在Java中能执行命令的类其实并不多,不像php那样各种的命令执行函数。在Java中目前所知的能执行命令的类也就两种,分别是Runtime和ProcessB

    2021年12月12日
  • ov7725摄像头人脸识别_ov7725摄像头

    ov7725摄像头人脸识别_ov7725摄像头OV7725摄像头软件实现简单的二值化处理项目使用的摄像头型号:​ 正点原子OV7725摄像头模块,带FIFO的摄像头模块。图像二值化化的个人见解:​ 常见的图片格式:​ 黑白图片、灰度图片、彩色图片。不同的图片的格式类型主要的不同点在每个像素点需要几位的二位数来表示。黑白图片每个像素不是0就是1,0代表黑颜色,1代表白颜色。灰度图像每个像素需要一个字节表示(8位二进制)每个像素可以量化…

    2022年9月2日
  • 什么是UDP攻击_机器人打电话营销效果

    什么是UDP攻击_机器人打电话营销效果UDP协议UDP是一个简单的面向数据报的运输层协议,也是最常见的作为流量攻击最多的一种协议,需要用到UDP的主要都是视频通讯,枪战类实时通讯的游戏类。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但并不保证它们能到达目的地。由于UDP传输数据前传输数据之前源端和终端不建立连接,且没有超时重发等机制,故而传输速度很快。UDP攻击UDP攻击是DDoS攻击的一种,是典型的流量型攻击。就好比学校中午放学时的食堂,学生大量飞奔食堂,但食堂窗口就那么多,学生数量太多,就只能挤在窗口前等待。

    2022年10月2日
  • 开启1521端口监听_服务器1521端口被关闭,如何开启?

    开启1521端口监听_服务器1521端口被关闭,如何开启?展开全部方法如下:1、修改远程桌面连接端口:(1)远程桌面终端服务默认端口为“3389”,为防止他人进行恶意连接,就需要32313133353236313431303231363533e78988e69d8331333365633964对默认端口进行更改。(2)对此可打开注册表编辑器,依次展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\…

    2022年6月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号