zoukankan      html  css  js  c++  java
  • L7-14 3D图形(一)

    一、课堂导入

    在之前的学习中我们学习了制作二维的平面图形,除了二维图形外还可制作3D立体图展示信息。

    二、3D图形

    1.概念

    3D图形在数据分析、数据建模、图形和图像处理等领域中 都有着广泛的应用,

    包括3D散点图、3D表面图、3D柱状图、 3D网状图、3D曲线图等。

    2.绘图库-Matplotlib

    Matplotlib 是 Python 的 2D绘图库,就像Pyecharts一样,可绘制 折线图、条形图、饼图、散点图等。

    matplotlab.pyplot是用来绘图的子库,一般matplotlib.pyplot 设置为plt,调用更加方便。

    案例1:

    import matplotlib.pyplot as plt 
    #导入数据
    plt.plot([1,2,3,4]) 
    #显示模块中的所有绘图对象
    plt.show()

    结果:是一条递增的直线,为什么呢?

    如果只传入一个list给plot(),它会认为这是y的值, 并自动生成x的值,又由于python计数以0开始,x 的长度与y一致,所以x的值为[0,1,2,3]。

    案例2:

    import matplotlib.pyplot as plt
    plt.plot([1,2,3],[5,7,4])
    plt.show()

    说明:plot需要许多参数,但前两个是'x''y'坐标,我们放入列表。 这意味着,根据这些列表我们拥有 3 个坐标:1,5  2,73,4

    此时我们会发现我们需要大量数据,但是在列表中逐个输入参数效率太低,这时我们用numpy生成数组, 生成大批量的数据,快速满足需求。

    3.Numpy

    3.1 什么是数组

    数组是在程序设计中,为了处理方便, 把具有相同类型的元素存储起来的集合。

    NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

    Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

    3.2 Numpy使用

    import numpy as np 
    # 1.array()函数创建数组 
    n = np.array([1, 2, 3, 4]) 
    
    # 2.zeros():创建全为0的数组,数组元素默认值是0. 
    n1 = np.zeros(10) 
    # 使用zeros函数创建一个全为0的10行10列数组。
    n2 = np.zeros((10, 10)) 
    # 按照n2创建一个数组 
    n3= np.zeros_like(n2) 
    
    # 3.ones():创建全为1的数组,所有元素都为1的数组 
    n4 = np.ones(10) 
    # 使用ones函数创建一个全是1的形状为(3, 3)的2维数组
    n5 = np.ones((3, 3)) 
    # 按照n5创建一个数组 
    n6 = np.ones_like(n5)
    
    # 4.arange()创建的NumPy数组,使用Numpy中类似于range的函数arange
    # 产生0-9共10个元素的数组 
    n7 = np.arange(10) 
    #产生从10-19共10个元素的数组 
    n8 = np.arange(10, 20) 
    #产生10 12 14 16 18, 2为step间隔为2的数组 
    n9 = np.arange(10, 20, 2) 
    
    # 5.empty() 创建空数组,填入任意值作为初始值 
    n10 = np.empty(5) 
    n10.fill(6.1) 
    
    # 6.random模块创建随机数组 
    n11 = np.random.randint(5) 
    # random.randint():用于创建随机整数数组。
    # 使用random.randint函数创建一个取值由0到10之间的5个整数组成的一维数组。
    n12 = np.random.randint(0,10,5)

    三、制作3D坐标轴图形

    制作3D 图形时,我们需要使用matplotlib中的一个工具包(toolkits),mpl_toolkits.mplot3d是 可绘制三维图形的工具包,提供了基本的3D绘图功能,

    支持的图表类型包括散点图、曲面图、网格图等,如果要为图表指定3D视图,要用Axes3D设置坐标轴。

    1.3D坐标轴

    通过我们的简单介绍,接下来我们将开始完成本节课3D图形的基本工作。

    # 导入绘图用的模块 
    import matplotlib.pyplot as plt 
    # 画三维图的工具包mpl_toolkits.mplot3d
    # Axes3D是mpl_toolkits.mplot3d中的一个绘图函数
    from mpl_toolkits.mplot3d import Axes3D 
    # 建立画布,生成数据
    fig=plt.figure() 
    #创建一个Axes对象,将二维转换为三维(有3D坐标) 
    ax=Axes3D(fig) 
    #显示图形 
    plt.show()

    2. 3D散点图

    2.1 简单散点图

    # 1.简单三维散点图 
    # 导入numpy 库
    import numpy as np 
    # 导入matplotlib库
    import matplotlib.pyplot as plt 
    # # 画三维图的工具包mpl_toolkits.mplot3d
    # # Axes3D是mpl_toolkits.mplot3d中的一个绘图函数
    from mpl_toolkits.mplot3d import Axes3D 
    # 使用random.randint函数创建一个取值由0到24之间的20个整数组成的一维数组。
    x = np.random.randint(0,24,20) 
    y = np.random.randint(0,24,20) 
    z = np.random.randint(0,24,20) 
    # 创建一个绘图对象 
    fig = plt.figure() 
    #二维转换为三维 
    ax = Axes3D(fig) 
    #设置标题  
    ax.set_title('Scatter Plot')  
    #修改颜色c及marker标记号".",",","o","v","^","<","1","8","p" 
    # c:色彩(b-blue,c-cyan,g-green,k-black,m-magenta,r-red,w-white,y-yellow)
    # marker:方位形状
    # 点,像素,圆形,倒三角,正三角,左三角,tri_down,八角形,五星
    ax.scatter(x, y, z,c = "r", marker=("2")) 
    # 添加坐标轴(顺序是Z, Y, X)或不添加 
    ax.set_zlabel('Z') 
    ax.set_ylabel('Y') 
    ax.set_xlabel('X') 
    plt.show() 

    2.2 复杂的散点图

    # 导入需要的库
    import numpy as np 
    import matplotlib.pyplot as plt 
    from mpl_toolkits.mplot3d import Axes3D 
    # 绘制3维的散点图
    # # 使用random.randint函数创建一个取值由-到-之间的20个整数组成的一维数组。
    x = np.random.randint(0,10,20) 
    y = np.random.randint(-20,20,20) 
    z = np.random.randint(0,30,20) 
    x1= np.random.randint(5,15,20) 
    y1= np.random.randint(0,20,20) 
    z1= np.random.randint(10,30,20) 
    # 创建一个绘图对象 
    fig = plt.figure() 
    #二维转换为三维 
    axes3d = Axes3D(fig) 
    axes3d.scatter(x, y, z,c = "r" ,marker=("*")) 
    axes3d.scatter(x1, y1, z1,c = "r" ,marker=("*")) 
    plt.show() 

    四、总结

    # 1. matplotlab.pyplot是用用来绘图的子库,一般matplotlib.pyplot 设置为plt 
    # 2.在绘图时,往往需要大批量的数据,在列表中逐个输入参数效率太低, 这时我们用numpy生成数组,生成大批量的数据,快速满足需求。 
    # 3.数组是在程序设计中,为了处理方便, 把具有相同类型的元素 存储起来的集合。
  • 相关阅读:
    Vue 左右翻页,点赞动画
    gitbook 使用
    css3 序列帧动画抖动
    ios添加-webkit-overflow-scrolling依然卡顿
    css 多行省略号兼容移动端
    Vue粒子特效(vue-particles插件)
    css3 渐变色兼容移动端
    前端性能优化:客户端从输入到展示讲解
    前端通信:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布
    前端通信:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码(改迭代已作废,移步迭代10)
  • 原文地址:https://www.cnblogs.com/xiaoxiao-ya/p/12559693.html
Copyright © 2011-2022 走看看