我刚开始使用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值可以在这里找到:
也许我所做的并不是最好的解决方案。因此,我希望有任何更好的替代解决方案。
提前谢谢你 亚历
答案 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的跳跃导致图中的点