2014-02-17 2 views
0

matplotlib에서 사용할 수있는 입력 배열을 격자 배열로 변환하기 위해 정의 된 함수를 사용하고 싶습니다. 더 큰 데이터를 가진 예를 보려면 내 griddata.zip 파일을보십시오. 배열은 예를 들어 x = [0,1.0,2.0], y = [0.0,10.0,20.0], z = [0.0, 20.0, 50.0]과 같으며 길이가 같고 x-y 표에 플롯되어 있어야합니다. : 기본적으로이 문제에 대한 답변이 일부있었습니다. 가능한 용액 M4rtini 주어진 하였다파이썬은 matplotlib에 대해 큰 데이터 배열을 그리드로 변환합니다

from numpy import linspace, meshgrid 
import numpy as np 
from pprint import pprint 
from scipy.interpolate import griddata 

def grid(x, y, z, resX=100, resY=100): 
    "Convert 3 column data to matplotlib grid" 
    grid_x, grid_y = np.mgrid[min(x): max(x):1j * resX, min(y): max(y):1j * resY] 
    Z = griddata(np.array(zip(x, y)), np.array(z), (grid_x, grid_y), method='nearest') 
    return grid_x, grid_y, Z 

x =[0,1.0,2.0] 
y = [0.0,10.0,20.0] 
z = [0.0, 20.0, 50.0] 

X,Y,Z = grid(x,y,z) 

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.gca(projection='3d') 

ax.plot_surface(X,Y,Z) 
plt.show() 

플롯 출력이 큰 데이터 파일과 같이 표시한다 : Image of Plot output

+0

나는 그것이 변수와 함수와 동일한 이름을 나쁜 관행 생각합니다. 아마도'print grid (x, y, z)'를 시도한 다음 출력 형식에 대해 걱정할 수도 있습니다. 또한,'scipy.interpolate import griddata'에서' – philshem

+0

'을 추가 할 필요가 있다고 생각합니다. 그럼에도 불구하고 내 설명이 업데이트되었지만 반환 값은 None입니다. – beneminzl

+0

(2 부분 대신) 그대로 전체 코드를 공유 할 수 있습니다. – philshem

답변

0
from numpy import linspace, meshgrid 
import numpy as np 
from pprint import pprint 
from scipy.interpolate import griddata 

def grid(x, y, z, resX=100, resY=100): 
    "Convert 3 column data to matplotlib grid" 
    grid_x, grid_y = np.mgrid[min(x): max(x):1j * resX, min(y): max(y):1j * resY] 
    Z = griddata(np.array(zip(x, y)), np.array(z), (grid_x, grid_y), method='nearest') 
    return grid_x, grid_y, Z 


x =[0,1.0,2.0] 
y = [0.0,10.0,20.0] 
z = [0.0, 20.0, 50.0] 

X,Y,Z = grid(x,y,z) 

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

fig = plt.figure() 
ax = fig.gca(projection='3d') 

ax.plot_surface(X,Y,Z) 
plt.show() 

다른 보간 방법의 상관이 테스트 데이터가 실패.

enter image description here

+0

감사합니다, 내 최소한의 예제에 대한이 완벽하게 작동하지만 여기에 주어진 큰 배열에 대해 작동하지 않는 이유를 알아낼 수 없습니다 [링크] (https://dl.dropboxusercontent.com/u/59720953/griddata. 지퍼), 어떤 생각? – beneminzl

+0

'from pylab import *'는 scipy에서 griddata를 덮어 씁니다. pylab에는 자체 그리드 데이터 기능이 있기 때문에. 그래서 당신은'from xx import * '를 사용해서는 안되며, 두 수입 중 하나는 반드시 바꿔야합니다. – M4rtini

+0

이 데이터의 경우 메서드를 '선형'또는 '입방체'로 변경하여 더 나은 결과를 얻을 수도 있습니다. – M4rtini

관련 문제