Python 绘制等高线

101 阅读1分钟

下面是绘制的效果 在这里插入图片描述 这里是绘制的代码

# -*- 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.]]

通过数据可以看出,越靠边缘的数据越大,最小的数位于中间