下面是绘制的效果
这里是绘制的代码
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 计算x,y坐标对应的高度值
def f(x,y):
#the height function
return x * x + y * y
# 生成x,y的数据
x = np.linspace(-3, 3, 7)
y = np.linspace(-3, 3, 7)
print("x=",x)
print("y=",y)
# 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值
X, Y = np.meshgrid(x, y)
print("X=",X)
print("Y=",Y)
# 填充等高线
c = plt.contour(X, Y, f(X, Y))
print("Z=",f(X, Y))
# 等高线标签
plt.clabel(c,inline=True,fontsize=10)
# 显示图表
plt.show()
输出控制台的数据
x= [-3. -2. -1. 0. 1. 2. 3.]
y= [-3. -2. -1. 0. 1. 2. 3.]
X= [[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]
[-3. -2. -1. 0. 1. 2. 3.]]
Y= [[-3. -3. -3. -3. -3. -3. -3.]
[-2. -2. -2. -2. -2. -2. -2.]
[-1. -1. -1. -1. -1. -1. -1.]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 1. 1. 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2. 2. 2.]
[ 3. 3. 3. 3. 3. 3. 3.]]
Z= [[18. 13. 10. 9. 10. 13. 18.]
[13. 8. 5. 4. 5. 8. 13.]
[10. 5. 2. 1. 2. 5. 10.]
[ 9. 4. 1. 0. 1. 4. 9.]
[10. 5. 2. 1. 2. 5. 10.]
[13. 8. 5. 4. 5. 8. 13.]
[18. 13. 10. 9. 10. 13. 18.]]
通过数据可以看出,越靠边缘的数据越大,最小的数位于中间