2013-10-12 1 views
0

저는 초보자입니다. 필자는 파이썬이 3D 등고선지도를 위해이 작업을 수행 할 것으로 믿습니다. 나는 그런등고선지도를 그리는 방법은 무엇입니까?

Y/X (mm), 0, 10, 20, 30, 40 
686.6, -5.02, -0.417, 0, 100.627, 0 
694.08, -5.02, -4.529, -17.731, -5.309, -3.535 
701.56, 1.869, -4.529, -17.731, -5.309, -3.535 
709.04, 1.869, -4.689, -17.667, -5.704, -3.482 
716.52, 4.572, -4.689, -17.186, -5.704, -2.51 
724, 4.572, -4.486, -17.186, -5.138, -2.51 
731.48, 6.323, -4.486, -16.396, -5.138, -1.933 
738.96, 6.323, -4.977, -16.396, -5.319, -1.933 
746.44, 7.007, -4.251, -16.577, -5.319, -1.688 
753.92, 7.007, -4.251, -16.577, -5.618, -1.688 
761.4, 7.338, -3.514, -16.78, -5.618, -1.207 
768.88, 7.338, -3.514, -16.78, -4.657, -1.207 
776.36, 7.263, -3.877, -15.99, -4.657, -0.822 

시작하는 방법에 어떤 도움을 아래와 같이 데이터 ..

업데이트 질문이

(1) 원시 데이터를 볼 수 있듯이, 그들은 xlabel 및 ylabel에있다 제 1 행, 제 1 열. numpy.loadtxt 기능을 사용하는 경우 "xs"와 "ys"를 분할하는 방법은 무엇입니까?

data = numpy.loadtxt('131014-data-xy-conv-1.txt') 

(2) M × N 행렬을 회전시키는 아이디어가 있습니까?

(3) 줄 간격은 start = -70이고 stop = 60, num = 60입니다. 5 단계를 만드는 방법을 알고 있습니까?

contour = subplot.contourf(xs, ys, data, levels=numpy.linspace(-70, 60, 60)) 
+0

업데이트가 원래 것과 아무 관계가 없으므로 새로운 질문을 만들어야합니다. 하지만 짧은 대답은 어레이 스플 라이스를 사용하는 것입니다 (''xs = data [0,1 :]; ys = data [1 :, 0]; heights = data [1 :, 1 :]]). 질문의 데이터를 현재 형식으로''loadtxt''로로드 할 수 없으므로 정확한 대답을 드릴 수 없습니다. – fjarri

답변

0

당신은 matplotlib, 즉 그 contourf 기능을 사용할 수 있습니다

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import numpy 


xs = numpy.array([0, 10, 20, 30, 40]) 
ys = numpy.array([686.6, 694.08, 701.56, 709.04, 716.52, 
    724, 731.48, 738.96, 746.44, 753.92, 761.4, 768.88, 776.36]) 

data = numpy.array([ 
    [-5.02, -0.417, 0, 100.627, 0], 
    [-5.02, -4.529, -17.731, -5.309, -3.535], 
    [1.869, -4.529, -17.731, -5.309, -3.535], 
    [1.869, -4.689, -17.667, -5.704, -3.482], 
    [4.572, -4.689, -17.186, -5.704, -2.51], 
    [4.572, -4.486, -17.186, -5.138, -2.51], 
    [6.323, -4.486, -16.396, -5.138, -1.933], 
    [6.323, -4.977, -16.396, -5.319, -1.933], 
    [7.007, -4.251, -16.577, -5.319, -1.688], 
    [7.007, -4.251, -16.577, -5.618, -1.688], 
    [7.338, -3.514, -16.78, -5.618, -1.207], 
    [7.338, -3.514, -16.78, -4.657, -1.207], 
    [7.263, -3.877, -15.99, -4.657, -0.822]]) 

fig = plt.figure() 
subplot = fig.add_subplot(111, xlabel='$x$, mm', ylabel='$y$, mm') 

contour = subplot.contourf(xs, ys, data, levels=numpy.linspace(-20, 120, 20)) 
subplot.set_xlim((xs[0], xs[-1])) 
subplot.set_ylim((ys[0], ys[-1])) 
fig.colorbar(contour) 

fig.savefig('t.png') 

The result

당신은 matplotlibhere 할 수 무엇을 볼 수 있습니다.

+0

멋지다! 감사. 그러나 ImportError : 'matplotlib'라는 모듈이 없습니다. 이클립스 표준/SDK 버전을 사용하고 있습니다. Kepler Release 빌드 ID : 20130614-0229. –

+0

다른 파이썬 패키지와 마찬가지로, 설치해야합니다. 이 과정은 운영체제에 따라 다르며, 필요한 모든 라이브러리 (''ghostsrcipt'',''libpng'' 등)가있는 경우''pip install matplotlib'처럼 쉽습니다.). 당신은 그것을 봐야한다. 설치 절차는 인터넷의 여러 곳에서 여러 번 기술되었다. – fjarri

+0

원시 데이터를 볼 수 있듯이 각각 1 행 1 열에 xlabel 및 ylabel이 있습니다. numpy.loadtxt 함수를 사용하면 "xs"와 "ys"를 어떻게 나눌 수 있습니까? '데이터 = numpy.loadtxt ('131014-data-xy-conv-1.txt ')' Mx N 행렬을 회전시킬 생각이 있습니까? –