我有一个图表显示了用python制作的一小块水的不同深度,但细节不如我想要的那么好。有没有办法修改我当前的代码来绘制具有良好分辨率的区域深度图?
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
import csv
x=[]
y=[]
z=[]
with open('EP_Aug2015.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
for row in readCSV:
x1 = row[0]
y1 = row[1]
z1 = row[2]
x.append(x1)
y.append(y1)
z.append(z1)
xmin=float(min(x))
xmax=float(max(x))
ymin=float(min(y))
ymax=float(max(y))
grid_x, grid_y = np.mgrid[xmin:xmax:30j, ymin:ymax:30j]
points = [[x[i], y[i]] for i in range(len(x))]
#[row[0] for row in values]
grid_z= griddata(points, z, (grid_x, grid_y), method='linear')
plt.contourf(grid_z)
plt.colorbar()
plt.show()
MATLAB脚本
EPdata= csvread('EP_Aug2015.csv',1,0);
%Create x,y,z values
x=EPdata(:,1);
y=EPdata(:,2);
z=EPdata(:,3);
%Make a range of x and y data points for contour
xi=linspace(min(x),max(x),30);
yi=linspace(min(y),max(y),30);
%Mesh the x and y data
[XI YI]=meshgrid(xi,yi);
%Interpolate original data with the meshed data range
ZI=griddata(x,y,z,XI,YI);
%Contour meshed data
contourf(XI,YI,ZI)
xlabel('Easting');
ylabel('Northing');
colorbar;
答案 0 :(得分:2)
有三件事马上就跳出来了。
contourf
但在Python中使用imshow
进行绘图,而不是在Python中使用contourf
。因此,在这两种情况下,我首先使用相同的插值分辨率,相同的插值方法和相同的绘图功能。如果仍有差异,您可能需要发布或提供一些示例数据的链接,因为很难分辨。
此外,您应该使用pandas.read_csv
来加载数据。