gpt4 book ai didi

python - 通过 python 的 matplotlib.pyplot.contourf 分散 x,y,z

转载 作者:行者123 更新时间:2023-11-28 23:01:45 27 4
gpt4 key购买 nike

大多数 pyplot 示例都使用线性数据,但如果数据是分散的呢?
x = 3,7,9<br/>
y = 1,4,5<br/>
z = 20,3,7

更好的 contourf 网格
xi = np.linspace(min(x)-1, max(x)+1, 9)<br/>
yi = np.linspace(min(y)-1, max(y)+1, 9)<br/>
X, Y = np.meshgrid(xi, yi)

现在必须将“z”数据插值到网格上。
numpy.interp在这里帮助不大,而线性nn
的插值 zi = matplotlib.mlab.griddata(x,y,z,xi,yi,interp="linear")返回相当奇怪的结果

scipy.interpolate.griddata cubic 下面第二个答案需要其他东西来返回数据而不是 nils

自定义级别的数据预计会看起来像什么 like this

最佳答案

事情是这样的: enter image description here

尽管contour 需要网格数据,我们可以将散点数据转换为网格,然后使用masked arrays 屏蔽掉空白区域。我在下面的代码中对此进行了模拟,方法是创建一个随机数组,然后使用它来屏蔽测试数据集(显示在底部)。大部分代码取自 this matplotlib demo page .

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

matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)

from numpy.random import *
import numpy.ma as ma

J = random_sample(X.shape)
mask = J > 0.7
X = ma.masked_array(X, mask=mask)
Y = ma.masked_array(Y, mask=mask)
Z = ma.masked_array(Z, mask=mask)

plt.figure()
CS = plt.contour(X, Y, Z, 20)
plt.clabel(CS, inline=1, fontsize=10)
plt.title('Simplest default with labels')
plt.savefig('cat.png')
plt.show()

enter image description here

关于python - 通过 python 的 matplotlib.pyplot.contourf 分散 x,y,z,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723413/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com