2014-08-30 87 views
0

我剛開始使用python,並嘗試編寫我的小程序來製作簡單的二維地塊。我試圖繪製二維矩陣(60x60)。除了包含在我的情節中的(x = 28,y = 60)的額外元素,它一切正常。2D plot with matplotlib

我在確定可能出現什麼問題時遇到了一些麻煩。不幸的是,由於我對Python的瞭解不多,我沒有真正找到任何有意義的解釋。

我使用的代碼是

  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') 

我用它繪製F(X,Y)= X * Y /(X + Y)。我得到的情節是:

請注意,我在由指針指示我的陰謀不必要的額外的元素。我操縱我的數據在劇情的右上部分產生剪輯。在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到y = 60引起的點在圖

+0

哦,是的。這到底是怎麼回事?謝謝,這比我想象的要簡單得多。最後,最後一個問題是,我需要在每個散點圖中設置每手的平方尺寸。我必須改變矩陣的尺寸,這很難通過簡單的硬編碼來完成。 – 2014-08-30 14:21:30