2013-05-06 3 views
2

У меня есть .txt файл со значениямиСтранное поведение GridData Matplotlib в

x1 y1 z1

x2 y2 z2

т.д.

С моим предыдущим небольшой опыт я пытался рисовать a 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), и я не понимаю тех разрывов х = 750 и х = 1875. И эти странные вертикальные линии по всему сюжету. Глядя на данные, я бы ожидал чего-то плавного, по крайней мере, в этих позициях, но выход явно не таков. Это проблема griddata()? Как я могу это решить?

Мне сказали, что, поскольку мои данные регулярно расположены на X и Y, я не должен использовать griddata(), но я посмотрел примеры, и я не могу заставить код работать.

+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

Смежные вопросы