• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

python画出优美的等高线图

武飞扬头像
MqtGhj
帮助1

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

代码如下:

  1.  
    import numpy as np
  2.  
    import matplotlib.pyplot as plt
  3.  
    # 第一个图
  4.  
    def calcu_elevation(x1, y1):
  5.  
    h = (1-x1/2 x1**3 y1**3) * np.exp(-x1**2-y1**2)
  6.  
    return h
  7.  
    n = 256 # 256个间隔点
  8.  
    x = np.linspace(-2, 2, n) # x坐标的数据
  9.  
    y = np.linspace(-2, 2, n) # y坐标的数据
  10.  
    # # 利用meshgrid()函数生成网格数据
  11.  
    x_grid, y_grid = np.meshgrid(x,y) # 使用 meshgrid 函数生成矩阵 X 和 Y。创建第三个矩阵 Z 并绘制其等高线。
  12.  
    fig = plt.figure() # pyplot.figure() 函数的作用就是创建一个图像,一般和plt.subplot() 一起用,subplot 就是创建子图。
  13.  
    ax = fig.add_subplot(111) # 指的就是将这块画布分为1×1,然后1对应的就是1号区
  14.  
    # 绘制等高线
  15.  
    con = ax.contour(x_grid, y_grid, calcu_elevation(x_grid, y_grid), 8, colors='black') # calcu_elevation(x_grid, y_grid)相对于Z坐标
  16.  
    # colors='black'填充等高线的颜色
  17.  
    ax.contourf(x_grid, y_grid, calcu_elevation(x_grid, y_grid), 8, alpha=0.5, cmap=plt.cm.copper)
  18.  
    # cmp表示图的颜色,8表示8 1条线,alpha表示颜色深度
  19.  
    # 为等高线添加文字标签
  20.  
    ax.clabel(con,inline=True, fmt='%1.1f', fontsize=10) # inline=True将数字插在等高线上,fontsize=10等高线字体大小
  21.  
    ax.set_xticks([])
  22.  
    ax.set_yticks([])
  23.  
    ax.set_title('contour line')
  24.  
    plt.show()
  25.  
     
  26.  
     
  27.  
    # 第二个图
  28.  
    def f(x, y):
  29.  
    return (1 - x / 2 x ** 5 y ** 3) * np.exp(-x ** 2 - y ** 2)
  30.  
     
  31.  
     
  32.  
    x = np.linspace(-3, 3, 50)
  33.  
    y = np.linspace(-3, 3, 50)
  34.  
     
  35.  
    X, Y = np.meshgrid(x, y)
  36.  
    plt.contourf(X, Y, f(X, Y), 8, alpha=0.8, cmap=plt.cm.copper) # cmp表示图的颜色,8表示8 1条线
  37.  
     
  38.  
    # x,y的坐标去掉
  39.  
    plt.xticks(())
  40.  
    plt.yticks(())
  41.  
    plt.show()
  42.  
     
  43.  
    # 第三个图
  44.  
    x = np.linspace(-3, 3, 50) # 生成连续数据
  45.  
    y = np.linspace(-3, 3, 50) # 生成连续数据
  46.  
    X, Y = np.meshgrid(x, y)
  47.  
    # 生成能够在坐标系中形成点阵的数组,这个可以去参考一下别的文章
  48.  
    # https://lixiaoqian.blog.csdn.net/article/details/81532855 这里讲的比较详细
  49.  
    Z = X**3 Y**2 # 这里将高度设置为x^2 y^2,就能画一个圆形的等高线
  50.  
    C = plt.contour(x, y, Z, [2, 5, 8, 10]) # 画等高线 # 使用plt.contour(X, Y,Z,[2,5,8,10])也是没问题的
  51.  
    plt.clabel(C, inline=True, fontsize=10)
  52.  
    plt.show()
学新通

代码运行效果如下:

第一幅图形:

学新通

第二幅图形:

学新通

第三幅图形:

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgagfaf
系列文章
更多 icon
同类精品
更多 icon
继续加载