matplotlib网格数据的奇怪行为

时间:2013-05-06 23:52:14

标签: python matplotlib

我有一个带值<。p>的.txt文件

x1 y1 z1

x2 y2 z2

凭借我之前的小经验,我试图用这段代码绘制一个contourf

import numpy as np
import matplotlib
from matplotlib import rc
import matplotlib.mlab as ml
from pylab import *

rc('font', family='serif')
rc('font', serif='Times New Roman')
rc('font', size='9')
rc('text', usetex=True)

from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
import numpy.ma as ma
from numpy.random import uniform
from matplotlib.colors import LogNorm
matplotlib.use('pgf')
fig = plt.figure()
data = np.genfromtxt('Velocidad.txt')
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'
rc('text', usetex=True)
rc('font', family='serif')


x = data[:,0]
y = data[:,1]
z = data[:,2]

xi = np.linspace(0,3000.0, 400)
yi = np.linspace(0,4.0, 200)
zi = griddata(x,y,z,xi,yi,interp='nn')

CS = plt.contourf(xi,yi,zi,200,cmap=plt.cm.jet,rasterized=True)
plt.colorbar()


plt.xlim(0,3000)
plt.ylim(0,4.0)
plt.ylabel(r'$t$')
plt.xlabel(r'$x$')
plt.title(r' Contour de $v(x,t)$')
plt.savefig("CampoVel.png", dpi=100)
plt.show() 

问题是输出:

enter image description here

当我看到这张图片时,我会查看数据(这里是in this link),我不理解x = 750和x = 1875中的那些不连续性。那些奇怪的垂直线条遍布整个情节。看看数据我会期望一些平滑,至少在那些位置,但输出显然不是。这是griddata()的问题吗?我该如何解决?

我被告知,由于我的数据在X和Y上有规律地间隔,我不应该使用griddata(),但是我看了一些示例,但我无法使代码工作。

1 个答案:

答案 0 :(得分:2)

如果您只是在加载数据后重新整形数据并跳过griddata,请执行以下操作:

data = data.reshape(81, 201, 3)
x = data[...,0]
y = data[...,1]
z = data[...,2]

CS = plt.contourf(x,y,z,200,cmap=plt.cm.jet,rasterized=True)
plt.colorbar()

plt.show() 

你得到这个: enter image description here