使用matplotlib绘制2D图

时间:2014-08-30 10:31:00

标签: python matplotlib scatter-plot

我刚开始使用python并尝试编写我的小程序来制作简单的2d图。我正在尝试绘制2D矩阵(60x60)。这一切都很好,除了我的情节中包含的(x = 28,y = 60)的额外元素。

我在找出可能出错的地方时遇到了一些麻烦。不幸的是,由于我对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

也许我所做的并不是最好的解决方案。因此,我希望有任何更好的替代解决方案。

提前谢谢你 亚历

1 个答案:

答案 0 :(得分: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的跳跃导致图中的点