python matplotlib 绘制3D图表

文章目录

  • 1. 绘制3D柱状图
  • 2. 绘制3D曲面图
    • ① 示例1
    • ② 示例2
  • 3.绘制3D散点图
  • 4. 绘制3D曲线图

      ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ
                 
    ʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞʚʕ̯•͡˔•̯᷅ʔɞ


大家好,我是侯小啾!
今天分享的内容是,如何使用python matplotlib绘制绘制出一系列酷炫的3D图像。基础的部分我在该系列的其他的blog中已经有所涉及,这里就主要通过代码示例快速传达有效信息啦。


1. 绘制3D柱状图

绘制3D柱状图使用的是axes3d.bar()方法。
可能跟我们中学学的有一点不同的是,其语法如下:

bar(left, height, zs=0, zdir=‘z’, *args, **kwargs)

其中left表示指向侧边的轴,zs表示指向我们的方向的轴,height即表示高度的轴。这三者都需要是一维的序列对象。
在调用相关方法的时候,比如设置轴标签,还有一点需要区分的是,left对应的是y轴,zs对应的是x轴。(意思就是说,比如使用plt.xticks()方法,操作的是zs;而使用plt.yticks()方法则操作的是left轴。height对应着z轴。)

一段完整的代码示例如下:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
plt.rcParams['font.sans-serif'] = ['STKAITI']
# 创建画布
fig = plt.figure()
# 创建3D坐标系
axes3d = Axes3D(fig)
zs = range(5)
left = np.arange(0, 10)
height = np.array([])
for i in range(len(zs)):z = zs[i]np.random.seed(i)height = np.random.randint(0, 30, size=10)axes3d.bar(left, height, zs=z, zdir='x',color=['red', 'green', 'purple', 'yellow', 'blue', 'black', 'gray', 'orange', 'pink', 'cyan'])
plt.xticks(zs, ['1月份', '2月份', '3月份', '4月份', '5月份'])
plt.yticks(left, ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G'])
plt.xlabel('月份')
plt.ylabel('型号')
plt.show()

图像效果如下:


2. 绘制3D曲面图

① 示例1

绘制曲面图使用的是plot_surface()方法,这个方法的参数相对而言更简单。且X、Y、Z三者的顺序相对较为容易分辨。

通过读示例代码,即可快速掌握其用法:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['STKAITI']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff')
ax = Axes3D(fig)
delta = 0.125
# 生成代表X轴数据的列表
x = np.arange(-4.0, 4.0, delta)
# 生成代表Y轴数据的列表
y = np.arange(-3.0, 4.0, delta)
# 对x、y数据执行网格化
X, Y = np.meshgrid(x, y)Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
# 计算Z轴数据(高度数据)
Z = (Z1 - Z2) * 2
# 绘制3D图形
ax.plot_surface(X, Y, Z,rstride=1,  # rstride(row)指定行的跨度cstride=1,  # cstride(column)指定列的跨度cmap=plt.get_cmap('rainbow'))  # 设置颜色映射
plt.xlabel('X轴', fontsize=15)
plt.ylabel('Y轴', fontsize=15)
ax.set_zlabel('Z轴', fontsize=15)
ax.set_title('《曲面图》', y=1.02, fontsize=25, color='gold')
# 设置Z轴范围
ax.set_zlim(-2, 2)
plt.show()


② 示例2

更换一组数据,呈现的则是另一种艺术效果:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['STKAITI']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
fig = plt.figure(figsize=(12, 10), facecolor='#cc00ff')
ax = Axes3D(fig)
delta = 0.125
# 生成代表X轴数据的列表
x = np.linspace(-2, 2, 10)
# 生成代表Y轴数据的列表
y = np.linspace(-2, 2, 10)
# 对x、y数据执行网格化
X, Y = np.meshgrid(x, y)# 计算Z轴数据(高度数据)
Z = X**2 - Y**2
# 绘制3D图形
ax.plot_surface(X, Y, Z,rstride=1,  # rstride(row)指定行的跨度cstride=1,  # cstride(column)指定列的跨度cmap=plt.get_cmap('rainbow'))  # 设置颜色映射
plt.xlabel('X轴', fontsize=15)
plt.ylabel('Y轴', fontsize=15)
ax.set_zlabel('Z轴', fontsize=15)
ax.set_title('《曲面图》', y=1.02, fontsize=25, color='gold')
plt.show()


3.绘制3D散点图

在3D曲面图示例1的基础上稍作修改。
绘制散点图使用scatter()方法,将散点颜色设置为绿色,红色边沿。

代码示例如下:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['STKAITI']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff')
ax = Axes3D(fig)
delta = 0.125
# 生成代表X轴数据的列表
x = np.arange(-4.0, 4.0, delta)
# 生成代表Y轴数据的列表
y = np.arange(-3.0, 4.0, delta)
# 对x、y数据执行网格化
X, Y = np.meshgrid(x, y)Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
# 计算Z轴数据(高度数据)
Z = (Z1 - Z2) * 2
# 绘制3D图形
ax.scatter(X, Y, Z,c='green',edgecolors='red')
plt.xlabel('X轴', fontsize=15)
plt.ylabel('Y轴', fontsize=15)
ax.set_zlabel('Z轴', fontsize=15)
ax.set_title('《散点图》', y=1.02, fontsize=25, color='gold')
# 设置Z轴范围
ax.set_zlim(-2, 2)
plt.show()

绘图效果如下:


4. 绘制3D曲线图

绘制曲线图,使用的则是我们最最最熟悉的plot()方法。

其他部分基本不变,数据部分生成三组适合我们绘图的数据,线条为金色,宽度设定为3.

代码如下:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['font.sans-serif'] = ['STKAITI']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
fig = plt.figure(figsize=(10, 8), facecolor='#cc00ff')
ax = Axes3D(fig)
theta = np.linspace(0, 3.14*10, 1000)
r = np.linspace(0, 1, 1000)
x = r * np.cos(theta)
y = r * np.sin(theta)
z = np.linspace(0, 4, 1000)
ax.plot(x, y, z, color='gold', lw=3)
plt.xlabel('X轴', fontsize=15)
plt.ylabel('Y轴', fontsize=15)
ax.set_zlabel('Z轴', fontsize=15)
ax.set_title('《曲线图》', y=1.02, fontsize=25, color='gold')
plt.show()

图像效果如下:


本次分享就到这里,小啾感谢您的关注与支持!

python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)相关推荐

  1. matplotlib绘制3D图像

    用Axes3D类创建3d ax import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Dfig = plt.fig ...

  2. Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)

    Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况) #仿真数据 import pandas as pd import numpy a ...

  3. 使用matplotlib绘制3D图像时插入图片

    最近学了matplotlib,想要在绘制3D图像的时候插入图片,但在网上找来找去没找到比较好的,唯一找到的一个速度有点慢.于是就自己动手吧. 先放下在stackoverflow看到的答案: # 注释为 ...

  4. Python+Matplotlib绘制带误差线的柱状图

    推荐图书: <Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),董付国,清华大学出版社,2020年6月第1次印刷,2021年12月第11次印刷,山东省一流 ...

  5. python绘制三维曲面图-Python中使用Matplotlib绘制3D图形示例

    原标题:Python中使用Matplotlib绘制3D图形示例 3D图形能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的3D绘图工具.3D图形在数据分析.数据建模. ...

  6. python画三维温度散点图-matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...

  7. python使用matplotlib可视化3D柱状图(3D histogram、三维柱状图、包含三个坐标轴x、y、z)、设置zdir参数为z、改变3d图观察的角度

    python使用matplotlib可视化3D柱状图(3D histogram.三维柱状图.包含三个坐标轴x.y.z).设置zdir参数为z.改变3d图观察的角度 目录

  8. python如何做散点图-matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...

  9. python绘制散点图-matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatte ...

最新文章

  1. SpringBoot使用prometheus监控
  2. Linux中的目录和文件管理
  3. 哥哥,请原谅妹妹的自私!妹妹想做你的新娘...超级感人
  4. Redis介绍及常用应用场景介绍
  5. Esper应用以及原理解析
  6. PHP连接MySQL报错:Fatal error: Call to undefined function mysql_connect()之解决方法
  7. openssl创建CA并签发证书
  8. Serverless 工作流给人工智能带来了哪些变化?
  9. python_day25__02__异常处理__try---exception—else---finally
  10. javaweb 获取服务器整个文件夹下的文件_详细得不要不要的 JavaWeb快速入门,值得收藏!...
  11. per_cpu机制的详解
  12. MATLAB中linspace函数使用
  13. 继杭州购房宝典后,Github上的这个程序员买房实用指南火了!
  14. SSM整合(idear)
  15. Minio分布式集群部署(Swarm)
  16. u-boot中的usb命令
  17. Java poi操作Excel单元格样式
  18. Windows 10中的Docker实践
  19. 蚂蚁金服数据分析平台 附下载
  20. 单片机8位抢答器实训机电报告_16路抢答器单片机实训报告.docx

热门文章

  1. 计算机的位、字节、字
  2. 平台搭建---Spark提交应用程序---Spark Submit提交应用程序及yarn
  3. IDEA spring找不到bean,找不到xml文件
  4. ElasticSearch高级篇(数据聚和、自动补全、数据同步、分片集群)
  5. python基础-数据类型
  6. CUDA内存管理一文理清|参加CUDA线上训练营
  7. WPF 替换ico图标 不生效
  8. java万年历方法_利用java制作万年历
  9. 小程序之旅(8) wx.qy.login 坑
  10. 血糖参考值及一般诊断标准