精华内容
下载资源
问答
  • Python三维绘图--Matplotlib

    万次阅读 多人点赞 2019-05-08 13:08:14
    Python三维绘图 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。python的matplotlib库就包含了丰富的三维绘图工具。 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式,一种是利用关键字...

    Python三维绘图

    在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。python的matplotlib库就包含了丰富的三维绘图工具。

    1.创建三维坐标轴对象Axes3D

    创建Axes3D主要有两种方式,一种是利用关键字projection='3d'l来实现,另一种则是通过从mpl_toolkits.mplot3d导入对象Axes3D来实现,目的都是生成具有三维格式的对象Axes3D.

    #方法一,利用关键字
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    #定义坐标轴
    fig = plt.figure()
    ax1 = plt.axes(projection='3d')
    #ax = fig.add_subplot(111,projection='3d')  #这种方法也可以画多个子图
    
    
    #方法二,利用三维轴方法
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    #定义图像和三维格式坐标轴
    fig=plt.figure()
    ax2 = Axes3D(fig)
    
    2.三维曲线和散点

    随后在定义的坐标轴上画图:

    import numpy as np
    z = np.linspace(0,13,1000)
    x = 5*np.sin(z)
    y = 5*np.cos(z)
    zd = 13*np.random.random(100)
    xd = 5*np.sin(zd)
    yd = 5*np.cos(zd)
    ax1.scatter3D(xd,yd,zd, cmap='Blues')  #绘制散点图
    ax1.plot3D(x,y,z,'gray')    #绘制空间曲线
    plt.show()
    

    在这里插入图片描述

    3.三维曲面

    下一步画三维曲面

    fig = plt.figure()  #定义新的三维坐标轴
    ax3 = plt.axes(projection='3d')
    
    #定义三维数据
    xx = np.arange(-5,5,0.5)
    yy = np.arange(-5,5,0.5)
    X, Y = np.meshgrid(xx, yy)
    Z = np.sin(X)+np.cos(Y)
    
    
    #作图
    ax3.plot_surface(X,Y,Z,cmap='rainbow')
    #ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)   #等高线图,要设置offset,为Z的最小值
    plt.show()
    

    在这里插入图片描述
    如果加入渲染时的步长,会得到更加清晰细腻的图像:
    ax3.plot_surface(X,Y,Z,rstride = 1, cstride = 1,cmap='rainbow'),其中的row和cloum_stride为横竖方向的绘图采样步长,越小绘图越精细。
    在这里插入图片描述

    4.等高线

    同时还可以将等高线投影到不同的面上:

    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    #定义坐标轴
    fig4 = plt.figure()
    ax4 = plt.axes(projection='3d')
    
    #生成三维数据
    xx = np.arange(-5,5,0.1)
    yy = np.arange(-5,5,0.1)
    X, Y = np.meshgrid(xx, yy)
    Z = np.sin(np.sqrt(X**2+Y**2))
    
    #作图
    ax4.plot_surface(X,Y,Z,alpha=0.3,cmap='winter')     #生成表面, alpha 用于控制透明度
    ax4.contour(X,Y,Z,zdir='z', offset=-3,cmap="rainbow")  #生成z方向投影,投到x-y平面
    ax4.contour(X,Y,Z,zdir='x', offset=-6,cmap="rainbow")  #生成x方向投影,投到y-z平面
    ax4.contour(X,Y,Z,zdir='y', offset=6,cmap="rainbow")   #生成y方向投影,投到x-z平面
    #ax4.contourf(X,Y,Z,zdir='y', offset=6,cmap="rainbow")   #生成y方向投影填充,投到x-z平面,contourf()函数
    
    #设定显示范围
    ax4.set_xlabel('X')
    ax4.set_xlim(-6, 4)  #拉开坐标轴范围显示投影
    ax4.set_ylabel('Y')
    ax4.set_ylim(-4, 6)
    ax4.set_zlabel('Z')
    ax4.set_zlim(-3, 3)
    
    plt.show()
    
    

    在这里插入图片描述在这里插入图片描述

    5.随机散点图

    可以利用scatter()生成各种不同大小,颜色的散点图,其参数如下:

    #函数定义
    matplotlib.pyplot.scatter(x, y, 
    	s=None,   #散点的大小 array  scalar
    	c=None,   #颜色序列   array、sequency
    	marker=None,   #点的样式
    	cmap=None,    #colormap 颜色样式
    	norm=None,    #归一化  归一化的颜色camp
    	vmin=None, vmax=None,    #对应上面的归一化范围
     	alpha=None,     #透明度
    	linewidths=None,   #线宽
    	verts=None,   #
    	edgecolors=None,  #边缘颜色
    	data=None, 
    	**kwargs
    	)
    #ref:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html
    
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    #定义坐标轴
    fig4 = plt.figure()
    ax4 = plt.axes(projection='3d')
    
    #生成三维数据
    xx = np.random.random(20)*10-5   #取100个随机数,范围在5~5之间
    yy = np.random.random(20)*10-5
    X, Y = np.meshgrid(xx, yy)
    Z = np.sin(np.sqrt(X**2+Y**2))
    
    #作图
    ax4.scatter(X,Y,Z,alpha=0.3,c=np.random.random(400),s=np.random.randint(10,20, size=(20, 40)))     #生成散点.利用c控制颜色序列,s控制大小
    
    #设定显示范围
    
    plt.show()
    

    在这里插入图片描述

    Finish
    Todo bar


    在这里插入图片描述

    展开全文
  • python 三维绘图

    2020-04-24 16:23:54
    文章目录python三维绘图一、创建三维坐标轴对象Axes3D python三维绘图 一、创建三维坐标轴对象Axes3D 有两种方式: 目的都是生成具有三维格式的对象 Axes3D. 方式一 利用参数 projection=‘3d’ 来实现: #!/usr/...

    python三维绘图

    一、创建三维坐标轴对象Axes3D

    有两种方式:
    目的都是生成具有三维格式的对象 Axes3D.

    • 方式一
      利用参数 projection=‘3d’ 来实现:
    #!/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : plt_learn.py
    @Time    : 2020/4/24 16:00
    @desc	 : matplotlib测试
    '''
    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    # 定义坐标轴
    fig = plt.figure()
    ax1 = plt.axes(projection='3d')
    
    z = np.linspace(0, 13, 1000)
    x = 5 * np.sin(z)
    y = 5 * np.cos(z)
    zd = 13 * np.random.random(100)
    xd = 5 * np.sin(zd)
    yd = 5 * np.cos(zd)
    
    # 绘制散点图
    ax1.scatter3D(xd, yd, zd, cmap='Blues',c='g')
    # 绘制空间曲线
    ax1.plot3D(x, y, z, 'gray')
    plt.show()
    
    

    • 方式二
      通过从 mpl_toolkits.mplot3d 导入对象 Axes3D 来实现
    #!/usr/bin/env python
    # encoding: utf-8
    '''
    @Author  : pentiumCM
    @Email   : 842679178@qq.com
    @Software: PyCharm
    @File    : plt_learn.py
    @Time    : 2020/4/24 16:00
    @desc	 : matplotlib测试
    '''
    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    # 定义图像和三维格式坐标轴
    fig = plt.figure()
    ax2 = Axes3D(fig)
    
    z = np.linspace(0, 13, 1000)
    x = 5 * np.sin(z)
    y = 5 * np.cos(z)
    zd = 13 * np.random.random(100)
    xd = 5 * np.sin(zd)
    yd = 5 * np.cos(zd)
    
    # 绘制散点图
    ax2.scatter3D(xd, yd, zd, cmap='Blues', c='g')
    # 绘制空间曲线
    ax2.plot3D(x, y, z, 'gray')
    plt.show()
    
    

    上面两种方案的效果:

    在这里插入图片描述

    参考:

    https://blog.csdn.net/u014636245/article/details/82799573

    展开全文
  • Python三维绘图

    2021-02-26 18:31:25
    Python三维绘图 PS:是从网上各个帖子中学习的代码,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除 代码相关函数说明: np.linspace:得到等差数列。举例:Value = np.linspace(0, 8 , 100)...

    Python三维绘图

    PS:是从网上各个帖子中学习的代码,因此代码的格式以及内容有粘贴网上其他大神的代码,如有侵权请告知删除

    代码相关函数说明:

    1. np.linspace:得到等差数列。举例:Value = np.linspace(0, 8 , 100),获取0到8的100个等差的数值
    2. np.pi:代表Π
    3. np.random.randint:获取随机数。举例np.random.randint(0, 8, (4, 8), np.int32),获取0到8的共4行8列的数值
    4. np.meshgrid:通过笛卡尔乘积,获得网格点
    5. a2 :求a的平方(a3 :求a的立方)
    6. np.sqrt:求平方根
    7. np.arange:取指定步长的值。举例np.arange(0, 3, 0.1),获取0到3步长为0.1的值
    8. fig.colorbar(surface):根据surface表面图显示颜色条
    9. plt.xlim:设定X轴长,Y轴同理
      10.ax.text:给坐标系中某点写文本。举例ax.text(x, y, z, ”test"),向坐标(x,y,z)点写入文本“test"。

    1 线绘制

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    Value = np.linspace(0, 8 * np.pi, 100)
    z = np.linspace(0, 4, 100)
    x = z * np.sin(Value)
    y = z * np.cos(Value)
    ax.plot(x, y, z, label='Test')
    ax.legend()
    plt.show()
    

    在这里插入图片描述
    2 点绘制

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    theta = np.linspace(0, 8 * np.pi, 100)
    z = np.linspace(0, 4, 100)
    x = z * np.sin(theta)
    y = z * np.cos(theta)
    ax.scatter(x, y, z, c='g', marker='o')
    ax.legend()
    plt.show()
    

    在这里插入图片描述
    3 线框绘制

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    z = np.random.randint(0, 8, (4, 8), np.int32)
    x = np.random.randint(8, 16, (4, 8), np.int32)
    y = np.random.randint(16, 24, (4, 8), np.int32)
    ax.plot_wireframe(x, y, z, rstride=5, cstride=5)
    ax.legend()
    plt.show()
    

    在这里插入图片描述
    4 表面绘制

    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib import cm
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    x = np.arange(8, 16, 0.5)
    y = np.arange(8, 16, 0.5)
    x, y = np.meshgrid(x, y)
    r = np.sqrt(x**2 + y**2)
    z = np.sin(r)
    surface = ax.plot_surface(x, y, z, cmap=cm.coolwarm, linewidth=0, antialiased=False)
    fig.colorbar(surface)
    ax.legend()
    plt.show()
    

    在这里插入图片描述
    5 柱状绘制

    import numpy as np
    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    col = ['r', 'g', 'y', 'b']
    x = [[1], [2], [3], [4]]
    xs = [1, 2, 3, 4]
    y = np.arange(1, 5, 1)
    z = np.arange(1, 5, 1)
    for i in range(0, 4):
        ax.bar(x[i], y[i], z[i], zdir='y', color=col[i])#zdir指定宽度沿着哪个坐标系
        Text = col[i]
        ax.text(xs[i], y[i], z[i], Text)
    plt.xlim(0, 6)
    plt.ylim(0, 6)
    plt.show()
    

    在这里插入图片描述

    展开全文
  • Python 三维绘图

    2021-01-30 13:10:24
    <p style="text-align:center"><img alt="" height="476" src="https://img-ask.csdnimg.cn/upload/1611983308511.png" width="640" /></p> 为什么这三条曲线会重叠在一起,Y坐标分别为1,...
  • 编辑推荐:本文主要介绍如何用python的matplotlib库中丰富的三维...Python三维绘图1.创建三维坐标轴对象Axes3D创建Axes3D主要有两种方式,一种是利用关键字projection='3d'l来实现,另一种则是通过从mpl_toolkits.mpl...

    编辑推荐:

    本文主要介绍如何用python的matplotlib库中丰富的三维绘图工具进行绘图,运用三维图给我们对数据带来更加深入地理解,希望对大家有帮助。

    本文来自于csdn ,由火龙果软件Alice编辑,推荐。

    Python三维绘图

    1.创建三维坐标轴对象Axes3D

    创建Axes3D主要有两种方式,一种是利用关键字projection='3d'l来实现,另一种则是通过从mpl_toolkits.mplot3d导入对象Axes3D来实现,目的都是生成具有三维格式的对象Axes3D.

    #方法一,利用关键字

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    #定义坐标轴

    fig = plt.figure()

    ax1 = plt.axes(projection='3d')

    #ax = fig.add_subplot(111,projection='3d')

    #这种方法也可以画多个子图

    #方法二,利用三维轴方法

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    #定义图像和三维格式坐标轴

    fig=plt.figure()

    ax2 = Axes3D(fig)

    2.三维曲线和散点

    随后在定义的坐标轴上画图:

    import numpy

    as np

    z = np.linspace(0,13,1000)

    x = 5*np.sin(z)

    y = 5*np.cos(z)

    zd = 13*np.random.random(100)

    xd = 5*np.sin(zd)

    yd = 5*np.cos(zd)

    ax1.scatter3D(xd,yd,zd, cmap='Blues') #绘制散点图

    ax1.plot3D(x,y,z,'gray') #绘制空间曲线

    plt.show()

    202003231.png

    3.三维曲面

    下一步画三维曲面:

    fig = plt.figure()

    #定义新的三维坐标轴

    ax3 = plt.axes(projection='3d')

    #定义三维数据

    xx = np.arange(-5,5,0.5)

    yy = np.arange(-5,5,0.5)

    X, Y = np.meshgrid(xx, yy)

    Z = np.sin(X)+np.cos(Y)

    #作图

    ax3.plot_surface(X,Y,Z,cmap='rainbow')

    #ax3.contour(X,Y,Z, zdim='z',offset=-2,cmap='rainbow)

    #等高线图,要设置offset,为Z的最小值

    plt.show()

    202003232.png

    如果加入渲染时的步长,会得到更加清晰细腻的图像:

    ax3.plot_surface(X,Y,Z,rstride = 1, cstride = 1,cmap='rainbow'),其中的row和cloum_stride为横竖方向的绘图采样步长,越小绘图越精细。

    202003233.png

    4.等高线

    同时还可以将等高线投影到不同的面上:

    from matplotlib

    import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    #定义坐标轴

    fig4 = plt.figure()

    ax4 = plt.axes(projection='3d')

    #生成三维数据

    xx = np.arange(-5,5,0.1)

    yy = np.arange(-5,5,0.1)

    X, Y = np.meshgrid(xx, yy)

    Z = np.sin(np.sqrt(X**2+Y**2))

    #作图

    ax4.plot_surface(X,Y,Z,alpha=0.3,cmap='winter')

    #生成表面, alpha 用于控制透明度

    ax4.contour(X,Y,Z,zdir='z', offset=-3,cmap="rainbow")

    #生成z方向投影,投到x-y平面

    ax4.contour(X,Y,Z,zdir='x', offset=-6,cmap="rainbow")

    #生成x方向投影,投到y-z平面

    ax4.contour(X,Y,Z,zdir='y', offset=6,cmap="rainbow")

    #生成y方向投影,投到x-z平面

    #ax4.contourf(X,Y,Z,zdir='y', offset=6,cmap="rainbow")

    #生成y方向投影填充,投到x-z平面,contourf()函数

    #设定显示范围

    ax4.set_xlabel('X')

    ax4.set_xlim(-6, 4) #拉开坐标轴范围显示投影

    ax4.set_ylabel('Y')

    ax4.set_ylim(-4, 6)

    ax4.set_zlabel('Z')

    ax4.set_zlim(-3, 3)

    plt.show()

    202003236.png

    5.随机散点图

    可以利用scatter()生成各种不同大小,颜色的散点图,其参数如下:

    #函数定义

    matplotlib.pyplot.scatter(x, y,

    s=None, #散点的大小 array scalar

    c=None, #颜色序列 array、sequency

    marker=None, #点的样式

    cmap=None, #colormap 颜色样式

    norm=None, #归一化 归一化的颜色camp

    vmin=None, vmax=None, #对应上面的归一化范围

    alpha=None, #透明度

    linewidths=None, #线宽

    verts=None, #

    edgecolors=None, #边缘颜色

    data=None,

    **kwargs

    )

    #ref:https://matplotlib.org/api/_as_gen

    /matplotlib.pyplot.scatter.html

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    #定义坐标轴

    fig4 = plt.figure()

    ax4 = plt.axes(projection='3d')

    #生成三维数据

    xx = np.random.random(20)*10-5

    #取100个随机数,范围在5~5之间

    yy = np.random.random(20)*10-5

    X, Y = np.meshgrid(xx, yy)

    Z = np.sin(np.sqrt(X**2+Y**2))

    #作图

    ax4.scatter(X,Y,Z,alpha=0.3,c=np.random.

    random(400),s=np.random.randint(10,20,

    size=(20, 40))) #生成散点.利用c控制颜色序列,s控制大小

    #设定显示范围

    plt.show()

    202003235.png

    展开全文
  • 主要给大家介绍了关于Python三维绘图之Matplotlib库的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Python三三维维绘绘图图之之Matplotlib库库的的使使用用方方法法 这篇文章主要给大家介绍了关于Python三维绘图之Matplotlib库的使用方法文中通过示例代码介绍的非常详细 对大家的学习或者工作 有一定的参考学习价值...
  • python的matplotlib库就包含了丰富的三维绘图工具。1.创建三维坐标轴对象Axes3D创建Axes3D主要有两种方式,一种是利用关键字projection='3d'l来实现,另一种则是通过从mpl_toolkits.mplot3d导入对象Axes3D来实现,...
  • Python三维绘图:马鞍面

    千次阅读 2017-11-18 10:22:54
    马鞍面,是一种曲面,又叫双曲抛物面,形状类似于马鞍。在XZ面上构造一条开口向上的抛物线,然后在YZ面上构造...在Python中绘制出马鞍面: from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as pl
  • Python三维绘图--Matplotlib colorbar生成

    万次阅读 2018-09-21 13:16:56
    #生成绘图数据 N = 100 x , y = np . mgrid [ : 100 , : 100 ] Z = np . cos ( x * 0.05 + np . random . rand ( ) ) + np . sin ( y * 0.05 + np . random . rand ( ) ) + 2 * np . random . rand ...
  • 他可以绘制各种图形,可是最近最的一个小程序,得到一些三维的数据点图,就学习了下python中的matplotlib模块,如何绘制三维图形。初学者,可能对这些第三方库安装有一定的小问题,对于一些安装第三方库经验较少的...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 298
精华内容 119
关键字:

python三维绘图

python 订阅