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

标签 python matplotlib

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

更好的轮廓网格
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下面第二个答案中的立方需要其他东西来返回数据而不是nils

使用自定义级别数据预计会看起来像 like this

最佳答案

事情是这样的: enter image description here

尽管轮廓需要网格数据,但我们可以将散点数据转换到网格中,然后使用屏蔽数组屏蔽空白区域。我在下面的代码中模拟了这一点,方法是创建一个随机数组,然后使用它来屏蔽测试数据集(如底部所示)。大部分代码取自 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/

相关文章:

python - 属性错误 : generator object has no attribute 'sort'

python - 绘制 n 个图形并将它们保存在 n 个不同的文件中

python-2.7 - 向calmap图添加颜色条

python - 表面,其中高度是两个函数的函数,以及第三个函数的总和

python - matplotlib 中的 bbox_to_anchor 和 loc

python - gtk.Builder,容器子类和绑定(bind)子部件

python - 在 Windows 上安装 NumPy

python - Selenium WebDriverException - 无法访问 chrome

Python - 函数实现的求和

python - 如何设置图例标记大小和 alpha?