文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python--matplotlib(4)

2023-09-04 20:42

关注

前言 

Matplotlib画图工具的官网地址是 http://matplotlib.org/

Python环境下实现Matlab制图功能的第三方库,需要numpy库的支持,支持用户方便设计出二维、三维数据的图形显示,制作的图形达到出版级的标准。

其他matplotlib文章

python--matplotlib(1)_码银的博客-CSDN博客

python--matplotlib(2)_码银的博客-CSDN博客

python--matplotlib(3)_码银的博客-CSDN博客

实验环境

Pycharm2020.2.5社区版,win11 

正文 

三维立体图形:

除了要引用matplotlib外,还需要引用mpl_toolkits.mplot3d库(from mpl_toolkits.mplot3d import Axes3D),需要在matplotlib的figure函数生成实例对象后(fig = plt.figure()),设置其制图模式为3d(fig.add_subplot(111, projection='3d'))。

1.简单三维图

import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224plt.show()

fc71951f8e8d4c5ba27dcb1cfcdf948c.png

import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfig = plt.figure()sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224X = [0, 1, 2, 1, 2, 4]Y = [0, 4, 4, 1, 3, 4]Z = [0, 4, 0, 0, 2, 4]sd.plot_trisurf(X, Y, Z)plt.show()

e06d235f9f364e9fb7ee7144e26336eb.png 

 

这个3d图可以转动,方便观察;

第四行代码:111,就是全屏或者或是正中间,剩下(221、222、223、224)对应四个角落,下面我依次截图看一下:

df0ab86fe68848d5b35cdd3f1772c6f0.png6a1231940bba4e499d62e1daf267fdfb.png

b77f3348d7dd4370b1e1be991fea5eb0.pngf76cfbb17b84473b958ae48e206a6ae4.png

plot_trisurf(z,y,z,...) :画3d曲平面的函数。

x,y,z要竖着看,一列对应的是一个点的坐标。

2.三维曲面plot_trisurf(薯片)

import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3Dradius = np.linspace(0.1, 1, 25)#np.linspace(start = 0.1, stop = 1, num = 25)#stop 参数数值范围的终止点。通常其为结果的最后一个值,但如果修改endpoint = False, 则结果中不包括该值angle = np.linspace(0, 2 * np.pi, 60, endpoint=False)angle = np.repeat(angle[..., np.newaxis],25, axis=0)#angles[..., np.newaxis]将每个元素转化为列表,np.repeat(a,repeats,axis=None);# repeats:复制次数;axis=None,flatten当前矩阵,axis=0,增加行数,列数不变,axis=1,增加列数,行数不变x = np.append(1, (radius * np.cos(angle)).flatten())y = np.append(0, (radius * np.sin(angle)).flatten())#flatten()是对多维数据的降维函数y=y/2x=x/2z = np.sin(x * y)z=z/2fig = plt.figure()sd = fig.add_subplot(projection='3d')sd.plot_trisurf(x, y, z, cmap=plt.get_cmap('YlOrRd'), linewidth=0.1)plt.show()

06c6b554141f44dea159619dbb2d2413.png

 a.导入库

import matplotlib.pyplot as pltimport numpy as npfrom mpl_toolkits.mplot3d import Axes3D

b.数据准备

radius = np.linspace(0.1, 1, 25)angle = np.linspace(0, 2 * np.pi, 60, endpoint=False)angle = np.repeat(angle[..., np.newaxis],25, axis=0)x = np.append(1, (radius * np.cos(angle)).flatten())y = np.append(0, (radius * np.sin(angle)).flatten())y=y/2x=x/2z = np.sin(x * y)z=z/2

linspace()函数

np.linspace(start = 0.1, stop = 1, num = 25)

start 参数数值范围的起始点。

stop 参数数值范围的终止点。通常其为结果的最后一个值,但如果修改endpoint = False, 则结果中不包括该值

num:数据数量,本篇选择了25个。

 

flatten()函数是对多维数据的降维函数,将矩阵的行之间首尾连接,组成一个一维矩阵;

 

repeat()函数

np.repeat(a,repeats,axis=0)

repeats:复制次数;

axis=None,把矩阵变成了一个一维矩阵[1,2,3,4];

axis=0,增加行数,列数不变;

axis=1,增加列数,行数不变

angles[..., np.newaxis]将每个元素转化为列表,

c.画图

fig = plt.figure()sd = fig.add_subplot(projection='3d')sd.plot_trisurf(x, y, z, cmap=plt.get_cmap('YlOrRd'), linewidth=0.1)plt.show()

cmap:调换颜色的作用

linewidth:线宽

3.三维曲面标题等设置

import matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dplt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号plt.rcParams["axes.unicode_minus"] = Falsefig = plt.figure()sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224X = [0, 1, 2, 1, 2, 4]Y = [0, 4, 4, 1, 3, 4]Z = [0, 4, 0, 0, 2, 4]sd.set_xlabel('x轴')sd.set_ylabel('y轴')sd.set_zlabel('z轴')plt.title('这是标题')sd.plot_trisurf(X, Y, Z)plt.show()

1176c0f00b4641938d1b4703e965efe8.png

我就直接使用标题1里面的代码加工了,

sd.set_xlabel('x轴')#x轴函数

sd.set_ylabel('y轴')#y轴函数

sd.set_zlabel('z轴')#z轴函数

plt.title('这是标题')#添加标题函数

因为我使用了中文,

plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号
plt.rcParams["axes.unicode_minus"] = False

所以还得用这两行代码,要是仅仅使用英文的话删除即可。

4.小结 

当初我第一次numpy库的时候的心得:使用pip install matplotlib安装matplotlib库,而 numpy 库我是在c:\users\yonghuming\appdata\local\programs\python\python39\scripts的目录下使用pip install numpy-1.22.4-cp39-cp39-win_amd64.whl才安装成功的。

现在我使用的是anaconda,直接把大部分的库安装好了,省时省力。

 

 

 

来源地址:https://blog.csdn.net/weixin_53197693/article/details/129156057

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯