• Python绘制三维图详解


    利用Python绘制三维图

    目标: 绘制图像 z 2 = x 2 + y 2 z^2 = x^2 + y^2 z2=x2+y2

    import matplotlib.pyplot as plt
    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D #绘制3D图案
    
    • 1
    • 2
    • 3

    画曲面的第一步是就是要创建一个二维平面的网格,在Python当中,我们使用meshgrid()函数,在matlab中也是这个函数哦

    创建数据:首先创建x和y,它们的范围都是(-1,1)

    x = np.linspace(-1,1,100)
    y = np.linspace(-1,1,50)
    
    • 1
    • 2

    然后调用numpy中的meshgrid函数,进行网格化操作。

    x_,y_ = np.meshgrid(x,y,indexing='ij') 
    
    • 1

    x_,y_返回网格数组,通过打印x_和y_的形状,可以看到x_,y_都是(100*50) 的二维数组,也就是数组x的长度乘以数组y的长度

    print(x_.shape,y_.shape)  
    
    • 1
    (100, 50) (100, 50)
    
    • 1

    网格化统一了X,Y的维度,数组运算时,涉及更多数据,范围更广

    z_ = x_**2 + y_**2
    
    • 1

    绘制图形

    plt.figure():自定义图像
    .add_subplot():添加子图
    .plot_surface():绘制曲面
    .colorbar():添加颜色棒

    fig = plt.figure(figsize=(12,8),facecolor='white') #创建图片
    sub = fig.add_subplot(111,projection='3d')# 添加子图,
    surf = sub.plot_surface(x_,y_,z_,cmap=plt.cm.brg) #绘制曲面,并设置颜色cmap
    cb = fig.colorbar(surf,shrink=0.8,aspect=15) #设置颜色棒
    
    
    sub.set_xlabel(r"$x$")
    sub.set_ylabel(r"$y$")
    sub.set_zlabel(r"$z$")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    完整代码

    import matplotlib.pyplot as plt
    import numpy as np
    from mpl_toolkits.mplot3d import Axes3D #绘制3D图案
    
    x = np.linspace(-1,1,100)
    y = np.linspace(-1,1,50)
    x_,y_ = np.meshgrid(x,y,indexing='ij') 
    z_ = x_**2 + y_**2
    fig = plt.figure(figsize=(12,8),facecolor='white') #创建图片
    sub = fig.add_subplot(111,projection='3d')# 添加子图,
    surf = sub.plot_surface(x_,y_,z_,cmap=plt.cm.brg) #绘制曲面,并设置颜色cmap
    cb = fig.colorbar(surf,shrink=0.8,aspect=15) #设置颜色棒
    
    sub.set_xlabel(r"$x$")
    sub.set_ylabel(r"$y$")
    sub.set_zlabel(r"$z$")
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    请添加图片描述

  • 相关阅读:
    C++ - 一些特殊类的设计
    数据结构之循环链表
    c++实现简单搜索二叉树<K,V>形
    Python的2042小游戏及其详解
    数值分析基础应用线性代数
    CAD必练图形
    Java切换到Kotlin,Crash率上升了?
    【LIN总线测试】——LIN主节点网络管理测试
    Android 使用 ToneGenerator 实现按键提示音
    python基于django的网上商品拍卖系统 毕业设计
  • 原文地址:https://blog.csdn.net/qq_45176548/article/details/127998794