python画出优美的等高线图
文中用python中的 matplotlib.pyplot画出各种类型颜色丰富多彩的各式地形图,其中每一行代码都有详细的介绍,并说明其含义和如何使用。代码可以直接运行使用。这些内容也是我自己的学习分享,希望大家批评指正!
·
文中用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()
代码运行效果如下:
第一幅图形:
第二幅图形:
第三幅图形:
更多推荐
已为社区贡献11条内容
所有评论(0)