2

我有一个带有值的 .txt 文件

x1 y1 z1

x2 y2 z2

等等

以我以前的一点经验,我试图用这段代码绘制一个轮廓

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() 

问题是输出:

在此处输入图像描述

当我看到这张照片并查看数据(在此链接中)时,我不明白 x=750 和 x=1875 中的那些不连续性。那些奇怪的垂直线遍布整个情节。查看数据,我希望至少在这些位置上会有一些平滑的结果,但输出显然不是。这是griddata()的问题吗?我该如何解决?

有人告诉我,由于我的数据定期在 X 和 Y 上间隔,我不应该使用 griddata(),但我查看了示例,但我无法让代码工作。

4

1 回答 1

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() 

你得到这个: 在此处输入图像描述

于 2013-05-07T00:27:06.343 回答