精华内容
下载资源
问答
  • 主要介绍了python+matplotlib绘制3D条形实例代码,具有一定借鉴价值,需要的朋友可以参考下
  • matplotlib画3D图

    2019-07-09 11:54:11
    from mpl_toolkits.mplot3d.axes3d import Axes3D fig = plt.figure() axes3d = Axes3D(fig) axes3d.scatter3D(x,y,np.log(x+y)) plt.show()
    from mpl_toolkits.mplot3d.axes3d import Axes3D
    fig = plt.figure()
    axes3d = Axes3D(fig)
    axes3d.scatter3D(x,y,np.log(x+y))
    plt.show()

     

    展开全文
  • 注意:我的都是17关节点的,其他数量的关节点请对照着改。 输入: [[9.07790224, -72.22343977, -76.2384473, -14.76985357, 93.36553108, 37.00967529, 50.77555181, 23.629042, -8.17606904, -55.17824984, ...

    做3D pose的同学经常需要可视化单帧的3D关键点结果来进行调试。

    本文实验目的,用matplotlib把一组点画成3D火柴人。注意:我画的都是17关节点的,其他数量的关节点请对照着改。

     

      

    输入

    [[9.07790224, -72.22343977, -76.2384473, -14.76985357, 93.36553108,
      37.00967529, 50.77555181, 23.629042, -8.17606904, -55.17824984,
      -20.64523825, 128.93648202, 161.99088735, 137.73662061, -105.13621915,
      -173.42035763, -139.20512344], # axis-x
     [17.67119202, 117.5121073, 80.80944741, 151.41362938, -82.1697299,
      -108.63658419, -62.51112022, 25.61594197, -0.93282285, -57.61404975,
      -33.30759321, -92.44999831, -192.53606268, -213.71209574, 110.08766607,
      213.40229899, 135.20572051], # axis-y
     [-30.39547729, 26.18883494, -502.97420581, -927.51450811, 24.75648722,
      -501.73217965, -929.53198007, 196.18478224, 435.39843872, 489.66153962,
      610.95493383, 412.93642629, 224.81752081, 97.52059155, 415.66381442,
      258.698571, 97.77770797 # axis-z
    ]]

     输出

    代码:

    # author: muzhan
    import matplotlib
    import numpy as np
    
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    
    ap1 = [[9.07790224, -72.22343977, -76.2384473, -14.76985357, 93.36553108,
            37.00967529, 50.77555181, 23.629042, -8.17606904, -55.17824984,
            -20.64523825, 128.93648202, 161.99088735, 137.73662061, -105.13621915,
            -173.42035763, -139.20512344],
           [17.67119202, 117.5121073, 80.80944741, 151.41362938, -82.1697299,
            -108.63658419, -62.51112022, 25.61594197, -0.93282285, -57.61404975,
            -33.30759321, -92.44999831, -192.53606268, -213.71209574, 110.08766607,
            213.40229899, 135.20572051],
           [-30.39547729, 26.18883494, -502.97420581, -927.51450811, 24.75648722,
            -501.73217965, -929.53198007, 196.18478224, 435.39843872, 489.66153962,
            610.95493383, 412.93642629, 224.81752081, 97.52059155, 415.66381442,
            258.698571, 97.77770797]]
    
    ap = np.array(ap1, dtype='float32').T / 1000.0
    np_data = ap
    xp = np_data.T[0].T
    yp = np_data.T[1].T
    zp = np_data.T[2].T  + 0.5
    
    ax = plt.axes(projection='3d')
    
    radius = 1.7
    ax.set_xlim3d([-radius / 2, radius / 2])
    ax.set_zlim3d([0, radius])
    ax.set_ylim3d([-radius / 2, radius / 2])
    ax.view_init(elev=15., azim=70)
    ax.dist = 7.5
    
    # 3D scatter
    ax.scatter3D(xp, yp, zp, cmap='Greens')
    
    # left leg, node [0, 1, 2, 3]
    ax.plot(xp[0:4], yp[0:4], zp[0:4], ls='-', color='red')
    
    # right leg
    ax.plot(np.hstack((xp[0], xp[4:7])),
            np.hstack((yp[0], yp[4:7])),
            np.hstack((zp[0], zp[4:7])),
            ls='-', color='blue')
    
    # spine, node [0, 7, 8, 9, 10]
    ax.plot(np.hstack((xp[0], xp[7:11])),
            np.hstack((yp[0], yp[7:11])),
            np.hstack((zp[0], zp[7:11])),
            ls='-', color='gray')
    
    # right arm, node [8, 11, 12, 13]
    ax.plot(np.hstack((xp[8], xp[11:14])),
            np.hstack((yp[8], yp[11:14])),
            np.hstack((zp[8], zp[11:14])),
            ls='-', color='blue')
    
    # left arm, node [8, 14, 15, 16]
    ax.plot(np.hstack((xp[8], xp[14:])),
            np.hstack((yp[8], yp[14:])),
            np.hstack((zp[8], zp[14:])),
            ls='-', color='red')
    plt.savefig('skeleton.jpg')
    

    上面那段代码就够画出骨架了~

    下面介绍另一种形式的输出关节点:

    3D关节点通常有过一定的线性变换,所以有时候画出来图案比较奇怪,可能是需要调节scale以及平移。比如下面这个栗子,稍微需要做个转置以及往下平移:

    import matplotlib
    import numpy as np
    
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt
    
    ap0 = [[-0.00001, -0.00002, 1.00830],
           [0.14475, -0.07537, 0.99674],
           [0.13747, -0.10477, 0.51222],
           [0.05090, -0.27371, 0.07246],
           [-0.14476, 0.07535, 1.01964],
           [-0.19476, -0.03135, 0.54859],
           [-0.33582, -0.27418, 0.14530],
           [0.03465, 0.07187, 1.27154],
           [0.08203, 0.09819, 1.55611],
           [0.13682, 0.16097, 1.71822],
           [0.09326, 0.02394, 1.77841],
           [-0.10811, 0.13847, 1.54135],
           [-0.40501, 0.27080, 1.54436],
           [-0.48869, 0.47729, 1.79511],
           [0.21069, -0.01737, 1.48483],
           [0.39367, -0.21920, 1.31686],
           [0.63089, -0.16669, 1.51139]]
    
    ap = np.array(ap0, dtype='float32')
    np_data = ap
    xp = np_data.T[0].T
    yp = np_data.T[1].T
    zp = np_data.T[2].T
    
    ax = plt.axes(projection='3d')
    
    radius = 1.7
    ax.set_xlim3d([-radius / 2, radius / 2])
    ax.set_zlim3d([0, radius])
    ax.set_ylim3d([-radius / 2, radius / 2])
    ax.view_init(elev=15., azim=70)
    ax.dist = 7.5
    
    # 3D scatter
    ax.scatter3D(xp, yp, zp, cmap='Greens')
    
    # left leg, node [0, 1, 2, 3]
    ax.plot(xp[0:4], yp[0:4], zp[0:4], ls='-', color='red')
    
    # right leg
    ax.plot(np.hstack((xp[0], xp[4:7])),
            np.hstack((yp[0], yp[4:7])),
            np.hstack((zp[0], zp[4:7])),
            ls='-', color='blue')
    
    # spine, node [0, 7, 8, 9, 10]
    ax.plot(np.hstack((xp[0], xp[7:11])),
            np.hstack((yp[0], yp[7:11])),
            np.hstack((zp[0], zp[7:11])),
            ls='-', color='gray')
    
    # right arm, node [8, 11, 12, 13]
    ax.plot(np.hstack((xp[8], xp[11:14])),
            np.hstack((yp[8], yp[11:14])),
            np.hstack((zp[8], zp[11:14])),
            ls='-', color='blue')
    
    # left arm, node [8, 14, 15, 16]
    ax.plot(np.hstack((xp[8], xp[14:])),
            np.hstack((yp[8], yp[14:])),
            np.hstack((zp[8], zp[14:])),
            ls='-', color='red')
    plt.savefig('skeleton.jpg')
    

    输出为:

    展开全文
  • 本博客介绍如何使用 matplotlib 绘制简单的图形,并介绍保存图片的方法。 matplotlib 可以绘制出很高级,很复杂的图形,本篇博客不做介绍,可以查看官方文档,写的很清楚,这里仅对部分使用频率比较高的图形做介绍 ...
  • 使用python中的Matplotlib +Tkinter 绘制3D图 Python提供了类似于MATLAB的2D绘图库,3D绘图库 将matplotlib绘制的图表镶嵌入tkinter做的界面中,tkinter是python的一个GUI库,有时候PC端UI界面上需要显示复杂的图时候...
  • Matplotlib3D图像

    2019-07-23 16:34:15
    怎样出如下所示的3D图像: 代码如下: import matplotlib.pyplot as plt from numpy import * from mpl_toolkits.mplot3d import Axes3D #设置坐标轴 fig=plt.figure() #定义一个窗口 ax=Axes3D(fig) #在窗口...

    怎样画出如下所示的3D图像:

    代码如下:

    import matplotlib.pyplot as plt
    from numpy import *
    from mpl_toolkits.mplot3d import Axes3D
    #设置坐标轴
    fig=plt.figure()   #定义一个窗口
    ax=Axes3D(fig)     #在窗口添加一个3d坐标轴
    
    #设置X,Y,Z的值
    X=arange(-4,4,0.25)  #范围是[-4,4],步长为0.25,生成一个数组
    Y=arange(-4,4,0.25)
    X,Y=meshgrid(X,Y)    #生成绘制3D图形所需要的网格数据
    R=sqrt(X**2+Y**2)
    Z=sin(R)
    
    #将图画在3d坐标上
    ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'),edgecolor='black') #rstride:行跨,cstride:列跨
    #将3d图像映射到xoy轴
    ax.contourf(X,Y,Z,zdir='Z',offset=-2,cmap='rainbow') #zdir='Z':将z轴压到xoy平面上,offset=-2:将图形映射到z=-2的平面上
    
    ax.set_zlim(-2,2)
    plt.show()

    注:

    • ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'),edgecolor='black')

    1. rstride和cstride表示跨度,r:row,c:column。rstride表示行跨,即两条线之间跨了多少行,cstride表示两条线之间垮了多少列。

    2. cmap就是图像的颜色属性。

    3. edgecolor对应的就是图中一条条线的颜色。

    • ax.contourf(X,Y,Z,zdir='Z',offset=-2,cmap='rainbow')

    1. 这个函数是画等高线所用到的一个函数,在这个例子中相当于用这个函数将3d图像映射到xoy轴上。

    2. zdir='z',offset=-2:设置一个z=-2的高度,在z轴的方向将这个3d图像压到一个平面上。

     

     

     

    展开全文
  • 可视化篇(一)———使用matplotlib绘制常用3D图形及案例摘要(一)添加matplotlib 3D模块(二)3d图中绘制曲线(三)3d图中绘制散点图(四)3d图中绘制线框图(五)3d图中绘制曲面图(六)3d图中绘制三角表面图...
  • 修改X,Y,Z轴的刻度值 from matplotlib.ticker import MultipleLocator,...from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from matplotlib import cm from matplotlib i...

    修改X,Y,Z轴的刻度值

    from matplotlib.ticker import MultipleLocator,FuncFormatter
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    from matplotlib import cm
    from matplotlib import colors
    from matplotlib.ticker import LinearLocator, FormatStrFormatter
    import numpy as np
    import matplotlib.ticker as ticker
    
    def fun(x):
        if x >= 1:
            return 1
        return x
    
    def to_percent(temp, position):
        return '%1.0f'%(100*temp)
    
    x = np.arange(0, 0.5, 0.001)
    y = np.arange(0, 0.05, 0.001)
    x, y = np.meshgrid(x, y)
    z = (3*x+y-x*x-np.sqrt(2*x*x*x-3*x*x*x*x+x*x+22*x*x*y-22*x*y-12*x*x*x*y-8*x*x*y*y+12*x*y*y-7*y*y))/(2*x+2*y)
    
    for row in range(len(z)):
        for col in range(len(z[0])):
            z[row][col] = fun(z[row][col])
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.set_zlim3d(0.6,1.0)
    ax.zaxis.set_major_locator(LinearLocator(5))#Z轴显示5个刻度值
    
    norm = colors.Normalize(vmin=0.6,vmax=1.0)
    ax.xaxis.set_major_formatter(FuncFormatter(to_percent))#将X,Y,Z轴的坐标轴放大100倍
    ax.yaxis.set_major_formatter(FuncFormatter(to_percent))
    ax.zaxis.set_major_formatter(FuncFormatter(to_percent))
    
    ax.set_xlabel(r'$\alpha$(%)')
    ax.set_ylabel(r'$\theta$(%)')
    ax.set_zlabel(r'$\gamma^{*}$(%)')#坐标轴
    
    surf = ax.plot_surface(x, y, z,
                           cmap=cm.coolwarm,
                           linewidth=0,
                           norm=norm,
                           antialiased=False,
                           edgecolor='none')
    ax.contourf(x,y,z,zdir='z',offset=-2,cmap='rainbow')
    

      

     

    修改colorbar的刻度为百分的形式

    def fmt(x,pos):
        print(x)
        # a, b = '{:2.2e}'.format(x).split('e')
        # b = int(b)
        return r'${}$%'.format(int(x*100))
    cbar = plt.colorbar(surf,shrink=0.5, aspect=5,format=ticker.FuncFormatter(fmt))#format用来修改调色板的刻度值
    cbar.set_ticks([.6,.7,.8,.9,1.0]) plt.tight_layout() 
    plt.savefig('实验图.svg',dpi=600) #指定分辨率保存 
    plt.show()  

     

    未修改前修改后
     

     

     

    alpha:0.0-0.5

    theta:0.00-0.05

    gamma:0.60-1.00

    colorbar:0.60-1.00

    alpha:0:50(每个乘以100)

    theta:0-5(每个乘以100)

    gamma:60-100(每个乘以100)

    colorbar:60%-100%(每个乘以100)

     

     

     

    参考文献:

    【1】matplotlib 修改坐标轴刻度值,刻度个数

    【2】解决python画图中colorbar设置刻度和标签字体大小

    【3】Matplotlib:给子图添加colorbar(颜色条或渐变色条)

     

    转载于:https://www.cnblogs.com/nxf-rabbit75/p/10965067.html

    展开全文
  • matplotlib3D绘图画图改变视角 觉得有用的话,欢迎一起讨论相互学习~ matplotlib设置固定视角 有时候使用matplotlib画图的默认视角不对会有很不好的体验 例如: 经过视角的调整可以看到一个完全不同的效果 方法 ...
  • 3D图和等高线图的绘制
  • 3D 柱状 按行/列涂颜色 柱加阴影、描黑边 自定义座标轴名、刻度标签、范围 Code import numpy as np import matplotlib matplotlib.rcParams['font.family'] = 'Times New Roman' matplotlib.rcParams['mathtext....
  • matplotlib画一个3d图形

    2019-04-19 15:55:50
    matplotlib是python中能...下面是用matplotlib画的一个3d图 看得太快真的是一边看一边忘啊 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax ...
  • python 2.7版本,已亲测可用 # 2D 隐函数绘图,如椭圆等 # 绘制3D静态散点 # 绘制3D静态线型 # 绘制3D静态曲面 # 绘制3D动态散点 # 绘制3D动态线型
  • 时间序列动态是显示时间演变的非常强大的工具,但 matplotlib 的默认动态很简单,不太适合用于比较多个时间序列。动态被广泛使用:从解释神经网络如何训练,到显示合成时间序列统计数...
  • Python 使用 matplotlib绘制3D图形

    千次阅读 2019-04-12 13:59:07
    3D图形在数据分析、数据建模、图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何在Python中使用 matplotlib进行3D图形的绘制,包括3D散点、3D表面、3D轮廓、3D直线(曲线)以及3D文字等的绘制。...
  • matplotlib画3D图形时设置z轴尺寸

    千次阅读 2020-05-22 22:47:42
    matplotlib画3D图形时设置z轴尺寸 参考链接:https://www.osgeo.cn/matplotlib/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html 百度了很多都说是使用Axis3D中的ax.set_zticks(),发现不起作用,查看参考链接...
  • matplotlib——3D图

    2021-05-25 11:14:24
    matplotlib——3D图 实验目的 熟练掌握matplotlib3D图的绘制方法 实验原理 Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现。但是,使用 Matplotlib 绘制三维图像实际...
  • 本篇仅针对使用matplotlib画3D曲面图,其他类型的3D图可根据本实例举一反三进行绘制。 具体步骤: 1、Pycharm如果没有matplotlib,第一部需要先安装matplotlib 点击File——Setting 选择 Project:deeplearning(项目...
  • 通过ax.scatter3D()来使用Matplotlib的mplot3d工具包,创建一个3D散点 示例1: # Import libraries from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt # Creating ...
  • 本篇文章主要介绍了python中Matplotlib实现绘制3D图的示例代码,具有一定的参考价值,有兴趣的可以了解一下
  • Matplotlib 是 Python 的绘图库...因为实现的是三维绘图,所以需要另外一个模块Axes3D,这是是 Matplotlib 里面专门用来三维的工具包。 import numpy as np from matplotlib import pyplot as plt from mpl_toolki
  • 一、简介 在机器学习中,经常需要查看原始数据的分布情况,从而对特征和算法的选择提供一个初始的intuition,通常来说...matplotlib绘图功能模仿MATLAB,功能非常方便和强大。 下面,本文将详细介绍如何使用matplotl...
  • Matplotlib学习笔记——三维

    万次阅读 多人点赞 2018-08-17 17:20:28
    Matplotlib画三维 最基本的三维是由(x, y, z)三维坐标点构成的线图与散点,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散点...
  • 简单的例子 参考:https://matplotlib.org/...from mpl_toolkits.mplot3d import axes3d import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ...的形式的3D ax1 = fig.add_subplot
  • Matplotlib画三维最基本的三维是由(x, y, z)三维坐标点构成的线图与散点,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感三维的线图和散点#绘制...
  • Matplotlib 生成 3D 图形

    2021-01-15 16:01:18
    import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.arange(-4, 4, 0.25) Y = np.arange(-4, 4, 0.25) X, Y = np.meshgrid(X, Y) R = np.sqrt...
  • 主要介绍了如何用Matplotlib 三维的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 使用matplotlib绘制3D图

    2018-03-19 17:26:49
    本文主要使用matplotlib进行3D图像的绘制。Demoimport matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D # 定义figure fig = plt.figure() # 将figure变为3d ax = Axes3D...
  • 使用Matplotlib绘制3D动画

    千次阅读 2019-11-04 08:39:22
    """ ============ 3D animation ============ A simple example of an animated plot... In 3D! ...import matplotlib.pyplot as plt import mpl_toolkits.mplot3d.axes3d as p3 import matplo...
  • 这里我们用到matplotlib、numpy和Axes3D库 from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np 点线图: print("点线图") fig = plt.figure() ax = Axes3D(fig) X = np....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,580
精华内容 5,832
关键字:

matplotlib画3d图