나는 matplotlib와 Axes3D를 사용하여 파이썬에서 3D 플롯을 만들었습니다. 꽤 괜찮은 것처럼 보이지만, 내가 계획하고있는 데이터의 양에 따라 들쭉날쭉 한 가장자리가 있습니다. 내가 데이터에 scipy 보간 방법을 시도했지만 plot_surface
명령은 다시 주어진 유형을 좋아하지 않습니다. 나는 그 주제에 관해 많은 것을 알 수 없었다. 3D 플롯에서 부드러운 큰 데이터
import numpy
import scipy.io as sio
from matplotlib import pyplot
import matplotlib
from mpl_toolkits.mplot3d import Axes3D
import scipy
#data pulled from file
matFile = sio.loadmat(matFileLocation)
data = matFile['data']
[numrows, numcols] = numpy.shape(numpy.atleast_2d(data))
fig = pyplot.figure()
ax = fig.gca(projection = '3d')
x = range(numcols)
y = range(numrows)
X, Y = numpy.meshgrid(x,y)
hImage = ax.plot_surface(X,Y,data,cmap = 'jet', rstride = 1, cstride = 10, linewidth=0, antialiased = False)
fig.colorbar(hImage)
hImage.set_clim(mindb, maxdb)
pyplot.show()
가 X, Y 유의하시기 바랍니다, 데이터는 내가 도망 다른 파일에 따라 변경됩니다. 올바른 방향의 한 점을 높이 평가할 것입니다.
편집 : 방법은
나는 내가 가지고 시도하지 않은 것을 기억할 수없는 지난 이틀 동안 너무 많은 다른 예에서 너무 많은 다른 보간 방법을 시도했습니다 시도했다. 나는 griddata
, interp2d
및 약간 hImage.imshow(interpolation='gaussian')
(또는 그 효과가있는 것)을 기억한다고 생각합니다. Griddata는 plot_surface
을 이해하지 못했고, interp2d는 끝나지 않았으며, hImage는 예상했던 것처럼 축소 된 변형없이 전체 플롯을 노란색으로 바꿨습니다.
또한 2D 데이터 배열과 1 차원 데이터 배열을 결합하고 2D 배열의 길이로 나누는 등의 다른 방법을 시도했습니다. 불행히도, 내 데이터에는 매우 낮은 값이 많이 포함되어 있기 때문에 컨버전스에서 잃어버린 몇 가지 높은 값이 있습니다. 편집 : len^2로 나누는 것을 잊어 버렸습니다. 값이 더 이해가됩니다.
본질적으로 MatLab에서 shading interp
을 찾고 있습니다.
날짜를 보간/무엇을 어떻게 표시했는지 보여주는 코드가 있습니까? 즉, 어떤 SciPy 기능을 시도했는지. 또한 Github에서 호스트 할 수있는 샘플 파일이나 우리와 함께 시도 할 수있는 종류의 파일이 있습니까? – dblclik
또한 제안 사항 중 하나를 시도 했습니까? http://stackoverflow.com/a/35158321/1607105? – dblclik
@dblclik 예에서 데이터를 시작한 것은 2D 배열이고 x와 y는 같지 않기 때문에이 예제의 'tck = interpolate.bisplrep (X, Y, Z, s = 0)'는 작업. 파일에 관해서는, 나는 실제로 작업 프로토콜로 인해 호스트 할 수있는 파일이 없습니다. 내가 말할 수있는 최선은 무작위 [140x50000] 행렬 (또는 플립 플롭 x와 y를 만드는 것인가? 나는 파이썬과 matlab 사이에 섞여있다)이다. 내가 시도한 방법은 편집을 참조하십시오. – SanticL