文中用python中的 matplotlib.pyplot画出各种类型颜色丰富多彩的各式地形图,其中每一行代码都有详细的介绍,并说明其含义和如何使用。代码可以直接运行使用。

代码如下:

import numpy as np
import matplotlib.pyplot as plt
# 第一个图
def calcu_elevation(x1, y1):
    h = (1-x1/2 + x1**3 + y1**3) * np.exp(-x1**2-y1**2)
    return h
n = 256  # 256个间隔点
x = np.linspace(-2, 2, n)  # x坐标的数据
y = np.linspace(-2, 2, n)  # y坐标的数据
# # 利用meshgrid()函数生成网格数据
x_grid, y_grid = np.meshgrid(x,y)  # 使用 meshgrid 函数生成矩阵 X 和 Y。创建第三个矩阵 Z 并绘制其等高线。
fig = plt.figure()    # pyplot.figure() 函数的作用就是创建一个图像,一般和plt.subplot() 一起用,subplot 就是创建子图。
ax = fig.add_subplot(111)  # 指的就是将这块画布分为1×1,然后1对应的就是1号区
# 绘制等高线
con = ax.contour(x_grid, y_grid, calcu_elevation(x_grid, y_grid), 8, colors='black') # calcu_elevation(x_grid, y_grid)相对于Z坐标
# colors='black'填充等高线的颜色
ax.contourf(x_grid, y_grid, calcu_elevation(x_grid, y_grid), 8, alpha=0.5, cmap=plt.cm.copper)
# cmp表示图的颜色,8表示8+1条线,alpha表示颜色深度
# 为等高线添加文字标签
ax.clabel(con,inline=True, fmt='%1.1f', fontsize=10)  # inline=True将数字插在等高线上,fontsize=10等高线字体大小
ax.set_xticks([])
ax.set_yticks([])
ax.set_title('contour line')
plt.show()


# 第二个图
def f(x, y):
    return (1 - x / 2 + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)


x = np.linspace(-3, 3, 50)
y = np.linspace(-3, 3, 50)

X, Y = np.meshgrid(x, y)
plt.contourf(X, Y, f(X, Y), 8, alpha=0.8, cmap=plt.cm.copper)  # cmp表示图的颜色,8表示8+1条线

# x,y的坐标去掉
plt.xticks(())
plt.yticks(())
plt.show()

# 第三个图
x = np.linspace(-3, 3, 50)  # 生成连续数据
y = np.linspace(-3, 3, 50)  # 生成连续数据
X, Y = np.meshgrid(x, y)
# 生成能够在坐标系中形成点阵的数组,这个可以去参考一下别的文章
# https://lixiaoqian.blog.csdn.net/article/details/81532855 这里讲的比较详细
Z = X**3 + Y**2     # 这里将高度设置为x^2+y^2,就能画一个圆形的等高线
C = plt.contour(x, y, Z, [2, 5, 8, 10])  # 画等高线 # 使用plt.contour(X, Y,Z,[2,5,8,10])也是没问题的
plt.clabel(C, inline=True, fontsize=10)
plt.show()

代码运行效果如下:

第一幅图形:

第二幅图形:

第三幅图形:

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐