2014-08-30 76 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