前言

在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解。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三维绘图之Matplotlib库使用的文章就介绍到这了,更多相关Python三维绘图Matplotlib库内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

python的mapl画图y轴排_Python三维绘图之Matplotlib库的使用方法相关推荐

  1. python的mapl画图y轴排_python中用Matplotlib做多个纵轴 (多y轴)

    Matlab里做多给轴的函数很直接,双轴是plotyy, 三轴是plotyyy, 四轴是plot4y,更多应该是multiplotyyy. 而matplotlib似乎可以用figure.add_axe ...

  2. python的mapl画图y轴排_在matplotlib中绘制多个y轴和颜色栏

    @OZ123抱歉,我花了这么长时间才回复.Matplotlib具有可扩展的可定制性,有时会让您对实际操作感到困惑.感谢您对创建单独轴的帮助. 然而,我不认为我需要那么多的控制,我最终只使用了PAD关键 ...

  3. python画图三维-Python三维绘图之Matplotlib库的使用方法

    前言 在遇到三维数据时,三维图像能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的三维绘图工具. 1.创建三维坐标轴对象Axes3D 创建Axes3D主要有两种方式, ...

  4. python修改y轴刻度_Python | Y轴刻度限制

    python修改y轴刻度 In some cases, we need to visualize our data within some defined range rather than the ...

  5. python一个图画两条曲线_用python建立两个Y轴的XY曲线图方法

    想把python提取出来的 加载点反力和某个单元的应力画在同一个XY曲线图上,由于两者数量级差太远,故而需要建立有两个Y轴的XY曲线图. 效果为: 代码如下: #创建Quatype,作为标记,用于判断 ...

  6. python画xy轴_用python建立两个Y轴的XY曲线图方法

    想把python提取出来的 加载点反力和某个单元的应力画在同一个XY曲线图上,由于两者数量级差太远,故而需要建立有两个Y轴的XY曲线图. 效果为: 代码如下: #创建Quatype,作为标记,用于判断 ...

  7. python绘制折线图数值小数点太长_Python matplotlib画图y轴数值不按大小排列问题

    matplotlib 画图的时候经常会出现y轴数据不按大小排列的问题,很混乱,这主要是因为数据类型的错误,导致的!大家可以仔细阅读下以下两个案例,就应该有答案了: 案例一: 昨天偶然做一个爬取数据,做 ...

  8. python画图y轴在右侧_解决python中画图时x,y轴名称出现中文乱码的问题

    如下所示: #-*- coding:utf-8 -*- import numpy as np import matplotlib.pyplot as plt from matplotlib.font_ ...

  9. echarts x轴像直尺一样设置刻度_Python matplotlib画图y轴数值不按大小排列问题

    matplotlib 画图的时候经常会出现y轴数据不按大小排列的问题,很混乱,这主要是因为数据类型的错误,导致的!大家可以仔细阅读下以下两个案例,就应该有答案了: 案例一: 昨天偶然做一个爬取数据,做 ...

最新文章

  1. 函数指针及其定义和用法,C++函数指针详解(附用法代码和注意事项)
  2. 高性能优秀的服务框架-dubbo介绍
  3. mysql执行存储过程提示out of_PHP执行MYSQL存储过程报错:Commands out of sync; you can't run...
  4. 高速串行总线走线难点在哪?重要线信号的处理经验分享
  5. 区块链 用户身份权限模式 方案
  6. Camera persist使用手册之log使用技巧
  7. SAP软件财务年结步骤
  8. 计算机网络期中考试总结反思,关于期中反思的说说
  9. java 字符串 空白字符_Java String中移除空白字符的多种方式汇总
  10. python 数列筛选_numpy ndarray 按条件筛选数组,关联筛选的例子
  11. 破开C语言暗夜的第二道光 —— 数据与数据类型(1)
  12. 牙膏不只可刷牙——32不寻常用途!!
  13. error NU1202: Package Volo.Abp.Cli 5.2.1 is not compatible with netcoreapp3.1
  14. 搭建SNS游戏服务器
  15. python智能合约编程_如何用Python Flask开发以太坊智能合约
  16. 可以给我写一个java语音外呼机器人代码吗
  17. pytorch基于cpu下的速度测试及cpu线程设置
  18. centos8ubuntu挂载exfat格式硬盘或者U盘
  19. pycharm运行sh文件的方法
  20. C++ CheckListBox

热门文章

  1. 2021 河北取证比武决赛个人赛 题解 入侵溯源
  2. CSSJS弹出层效果,兼容所有浏览器
  3. 我的世界java18w50a_我的世界Minecraft Java版 18w21a 发布
  4. ppt中的面积显示图表中有数据被盖住了显示不出来_关于PPT图表的用法,看这一篇就够了...
  5. 计算机网络简要复习纲要(前六章)
  6. 滴答顺风车怎么抢90%以上的订单_想来赚顺风车钱的补课内容都给你准备好了
  7. 登陆验证成功后的跳转页面依然保留用户信息
  8. 人生节点 | 2021年终总结2022年度计划
  9. ss命令和Recv-Q和Send-Q状态
  10. ”去他丫的北上广,老子要去成都定居了!“一名33岁老码农有话说