2014-08-30 2 views
0

방금 ​​파이썬을 사용하기 시작했고 간단한 2 차원 플롯을 만들기 위해 작은 프로그램을 작성했습니다. 2D 행렬 (60x60)을 그려 넣으려고합니다. 내 플롯에 포함 된 추가 요소 (x = 28, y = 60)를 제외하고는 모두 잘 작동합니다.matplotlib을 사용한 2D 플롯

나는 무엇이 잘못되었을지를 파악하는 데 약간의 어려움이있었습니다. 불행히도 파이썬에 대한 겸손한 지식으로 인해 저는 의미있는 설명을 찾지 못했습니다.

I가 사용하고있는 코드가 I (X, Y) = X *에의 Y/(X + Y F) 플롯을 이용

  import matplotlib.pyplot as plt 
     import matplotlib as mpl 
     import numpy as np 
     from subprocess import call 

     from math import pi 

     import sys 

     x = [] 
     y = [] 
     z = [] 

     if len(sys.argv) > 1: 
      fname = sys.argv[1] 
     else: 
      fname = 'data.txt' 

     print 'reading data from {}'.format(fname) 
     print 'This is the correct verssion trimming the blanks' 
     for l in open(fname, 'r'): 
      try: 
       xx, yy, zz = map(float, l.split()) 
       if zz > 0. : 
        x.append(int(xx)) 
        y.append(int(yy)) 
        z.append(zz) 
      except ValueError: 
       pass 

     plt.scatter(x, y, c=z ,s=35, marker='s',cmap=mpl.cm.spectral,linewidths=0) 
     plt.clim(0,max(z)) 
     cbar=plt.colorbar() 
     cbar.ax.set_visible(False) 
     s=18 

     plt.xlim([min(x)-3,max(x)+3]) 
     plt.ylim([min(y)-3,max(y)+3]) 
     plt.axis('off') 

     finalname = fname + '.png' 
     pdfname = fname + '.png' 

     plt.savefig(pdfname,dpi=100,bbox_inches='tight') 

이다. 내가 가진 줄거리는 다음과 같습니다 내가 포인터로 표시 내 음모에 원치 않는 추가 요소가

참고. 나는 음모의 오른쪽 상단 부분에 상처를 만들기 위해 내 데이터를 조작. 내가 사용하는 X, Y, Z 값은 여기에서 찾을 수 있습니다 :

http://pastebin.com/snyvGD2q

은 아마도 내가 무엇을하고 있는가하는 것이 최선의 해결책이 아닙니다. 따라서 나는 더 나은 대체 솔루션을 주셔서 감사하겠습니다.

는 알렉스

답변

2

귀하의 문제는 원본 데이터에서 파생 사전에 감사합니다. 당신이 당신의 텍스트 파일에 1773 주위에 라인을 선택하면 , 당신은이 : 예에

29   50 18.4 
    29   51 18.5 
    29   52 18.6 
    29   60 19.6 
    30   1 1.0 
    30   2 1.9 
    30   3 2.7 
    30   4 3.5 
Y에서

점프 = 52 = 60 예, 그림

+0

오에있는 점을 일으키는 것입니다. 어떻게 끝났는가 ... 고마워, 생각했던 것보다 훨씬 간단 해. 그리고 마침내 마지막 질문 하나는 필자의 분산 형 플롯에서 정사각형 크기를 손으로 설정하는 것입니다. 행렬 차원을 변경하면서 변경해야합니다. 단순히 하드 코딩 만하면 매우 불편합니다. –