numpy plt.contour from matrix

时间:2018-03-04 18:58:50

标签: numpy matplotlib

我想知道是否有人可以填写如何创建网格以生成等高线图的代码?
导入的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,'e​​xec'),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“

1 个答案:

答案 0 :(得分:0)

如果n=12150715(你从哪里发明了这个数字?)那么一个包含n ** 2个元素的数组将不再适合你的记忆。除此之外,无论如何想象这样一个巨大的阵列是没有意义的。

当然xy需要与矩阵的列数和行数一致。

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