我想知道是否有人可以填写如何创建网格以生成等高线图的代码?
导入的txt文件是一个数字矩阵,其值为0-255。我可以使用以下代码来打印图像,但不能将网格设置为获得轮廓线图。
import numpy as np
import matplotlib.pyplot as plt
matrix = np.loadtxt('matrix.txt')
print (matrix)
#how do I make the mesh grid here?
plt.contour(matrix)
plt.show()
编辑: 道歉我看到这是类似的,但利用前一个线程为meshgrid ....他们使用函数'arange'?
n = 12150715
x = arange (n)
y = arange (n)
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, matrix)
plt.contour(matrix)
plt.show()
我仍然会遇到错误,但如果我超出plt上面的部分,我仍然会得到错误。
“文件”“,第1行,in runfile('/ myfiles / testing.py',wdir ='/ Volumes /.../ Python')
文件“/Users/ME/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py”,第710行,在runfile中 execfile(filename,namespace)
文件“/Users/ME/anaconda3/lib/python3.6/site-packages/spyder/utils/site/sitecustomize.py”,第101行,在execfile中 exec(compile(f.read(),filename,'exec'),namespace)
文件“testing.py”,第25行,in X,Y = np.meshgrid(x,y)
文件“/Users/ME/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py”,第4684行,在meshgrid中 output = [输出中x的x.copy()]
文件“/Users/ME/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py”,第4684行, output = [输出中x的x.copy()]
的MemoryError“
答案 0 :(得分:0)
如果n=12150715
(你从哪里发明了这个数字?)那么一个包含n ** 2个元素的数组将不再适合你的记忆。除此之外,无论如何想象这样一个巨大的阵列是没有意义的。
当然x
和y
需要与矩阵的列数和行数一致。
import numpy as np
import matplotlib.pyplot as plt
matrix = np.loadtxt('matrix.txt')
x = arange (matrix.shape[1])
y = arange (matrix.shape[0])
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, matrix)
plt.show()