我有一个带值<。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()
问题是输出:
当我看到这张图片时,我会查看数据(这里是in this link),我不理解x = 750和x = 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()
你得到这个: