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

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

在这里插入图片描述请添加图片描述请添加图片描述请添加图片描述在这里插入图片描述

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


大家好,我是侯小啾!在这里插入图片描述

在这里插入图片描述今天分享的内容是,如何使用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(-X2 - Y2)

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 = X2 - Y2

绘制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散点图

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mg-blog.csdnimg.cn/img_convert/21b2604bd33c4b6713f686ddd3fe5aff.png)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-JbMMbjBy-1713157199282)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!