• 主要介绍了python+matplotlib绘制3D条形实例代码，具有一定借鉴价值,需要的朋友可以参考下
• 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界面上需要显示复杂的图时候...
• 怎样出如下所示的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图像压到一个平面上。
meshgrid(x,y)函数的详细用法：https://blog.csdn.net/beautiful77moon/article/details/97006920


展开全文
• 可视化篇（一）———使用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是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 的默认动态很简单，不太适合用于比较多个时间序列。动态被广泛使用：从解释神经网络如何训练，到显示合成时间序列统计数...
• 3D图形在数据分析、数据建模、图形和图像处理等领域中都有着广泛的应用，下面将给大家介绍一下如何在Python中使用 matplotlib进行3D图形的绘制，包括3D散点、3D表面、3D轮廓、3D直线（曲线）以及3D文字等的绘制。...
• matplotlib画3D图形时设置z轴尺寸 参考链接：https://www.osgeo.cn/matplotlib/api/_as_gen/mpl_toolkits.mplot3d.axes3d.Axes3D.html 百度了很多都说是使用Axis3D中的ax.set_zticks()，发现不起作用，查看参考链接...
• 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函数来创建，默认情况下，散点会自动改变透明度，以在平面上呈现出立体感三维的线图和散点#绘制...
• 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图像的绘制。Demoimport matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D # 定义figure fig = plt.figure() # 将figure变为3d ax = Axes3D...
• """ ============ 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....

...