首页 > 编程语言 >python--matplotlib(4)

python--matplotlib(4)

时间:2023-02-26 14:06:42浏览次数:32  
标签:plt python matplotlib -- np import axis sd


前言 

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

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


实验环境

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 plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224
plt.show()

python--matplotlib(4)_matplotlib

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224
X = [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()

python--matplotlib(4)_3d_02

 

 

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

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

python--matplotlib(4)_matplotlib_03

python--matplotlib(4)_开发语言_04

python--matplotlib(4)_数据_05

python--matplotlib(4)_数据_06

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

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

2.三维曲面plot_trisurf(薯片)

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

radius = 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/2
x=x/2
z = np.sin(x * y)
z=z/2
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()

python--matplotlib(4)_开发语言_07

 a.导入库

import matplotlib.pyplot as plt
import numpy as np
from 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/2
x=x/2
z = 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 plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams["font.sans-serif"] = ["SimHei"]# 正确显示中文和负号
plt.rcParams["axes.unicode_minus"] = False
fig = plt.figure()
sd = fig.add_subplot(111, projection='3d')#111,221,222,223,224
X = [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()

python--matplotlib(4)_开发语言_08

我就直接使用标题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,直接把大部分的库安装好了,省时省力。

 

标签:plt,python,matplotlib,--,np,import,axis,sd
From: https://blog.51cto.com/hwuu/6086425

相关文章

  • python--排序总结
    1.快速排序a.原理快速排序的基本思想是在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放人最终位置后,整个数据序列被基准分割成两个子序列,所有小于基......
  • 有没有一个在线工具可以将Python代码转换为Java代码?
    Python和Java是软件开发行业中广泛使用的两种编程语言。两者都有自己的优点和缺点,适用于不同类型的项目。Python以其易用性和可读性而闻名,而Java以其健壮性和性能而闻名。Py......
  • 上上签文件手动签自动签盖章失败问题
    前言调用上上签SDK,发起文件合同手动签,盖章后失败,无印章,自动签后,依然无印章,下载合同预览长这样,可以看出实际上改了章,但是就是没有矢量图电子签章原因一个非常细微的问题,文件......
  • springboot中jar包中 集成react前端项目
    1.前端打包复制到springboot项目中2.配置thymeleaf:prefix:classpath:/templates/suffix:.htmlcache:falseservlet:content-type:text/htmle......
  • Linux的Firewalld服务
    Firewalld防火墙基本操作#查找防火墙服务名[root@server~]#systemctllist-units|grepfirefirewalld.serviceloadedactiverunningfirewalld-dynamicfir......
  • Mysql中关于查询日志的配置详解
    查询日志MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。开启查询日志MySQL默认情况下没有开启查询日志,如果需要开启查询日志,则需要在​​my.cnf​​​......
  • 【FPGA】Verilog:实现十六进制七段数码管显示 | 7-Segment Display
    写在前面:本章主要内容为理解七点数码管显示的概念,并使用Verilog实现。生成输入信号后通过仿真确认各门的动作,通过FPGA检查在Verilog中实现的电路的操作。Ⅰ.前置知识......
  • 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
    509.斐波那契数classSolution{publicintfib(intn){if(n==0)return0;if(n==1)return1;inta=0;intb=1;in......
  • 62. 不同路径 63. 不同路径 II
    62.不同路径classSolution{publicintuniquePaths(intm,intn){int[][]dp=newint[m][n];for(inti=0;i<m;i++){dp[i][0]=......
  • stm32f407探索者开发板(十九)——外部中断实验-EXIT
    文章目录​​一、外部中断概述​​​​二、外部中断库函数设置​​​​2.1SYSCFG_EXTILineConfig(设置IO口与中断线的映射关系)​​​​2.2EXTI_Init(初始化中断线:触发方式等......