python基础知识(十一):matplotlib的基本用法一

news2024/11/16 15:31:23

目录

  • 1. matplotlib库和numpy库
  • 2. matplotlib绘图的简单示例
  • 3. 设置窗口的尺寸比例,线宽和颜色
  • 4. 坐标轴设置
  • 5. 去除坐标轴边框和坐标轴原点化
  • 6. 图例
  • 7. 文本标注

1. matplotlib库和numpy库

matplotlib库是python的绘图库,numpy库是numpy是python中基于数组对象的科学计算库。

2. matplotlib绘图的简单示例

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-1, 1, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y的函数
y2 = x ** 2  # 写出y的函数
plt.figure(1)
plt.plot(x, y1)  # 以x为横坐标,y1为纵坐标画图
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.show()  # 将画的图显示出来,必不可少

这段代码首先导入matplotlib和numpy库,然后产生-1到1的1*50的数组,也就是行向量,然后产生两个函数,并且绘制函数,而且在一幅图中绘制多条曲线时直接用plot即可,最后一步plt.show()必不可少,如果少了图像不显示。
在这里插入图片描述
当然,绘制两幅图也可以。

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-1, 1, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y的函数
y2 = x ** 2  # 写出y的函数
plt.figure(1)
plt.plot(x, y1)  # 以x为横坐标,y1为纵坐标画图
plt.figure(2)
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.show()  # 将画的图显示出来,必不可少

在这里插入图片描述
在这里插入图片描述

3. 设置窗口的尺寸比例,线宽和颜色

在figure()中添加figsize=(, )改变窗口的长宽比,添加color=‘r’, linewidth=1.0, linestyle='–'是改变颜色,线宽和线型。线型和颜色有哪些样式大致同MATLAB,可参考线型和颜色

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-3, 3, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y1的函数
y2 = x ** 2  # 写出y2的函数
plt.figure(1)
plt.plot(x, y1)  # 以x为横坐标,y1为纵坐标画图
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.figure(2, figsize=(8, 5))  # 给图像序号和大小设置长为8宽为5
plt.plot(x, y1, color='r', linewidth=1.0, linestyle='-.')
"""以x为横坐标,y1为纵坐标画图,设置线的颜色红色,线宽1.0,线的类型虚线"""
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.show()  # 将画的图显示出来,必不可少

在这里插入图片描述
在这里插入图片描述

4. 坐标轴设置

plt.xlim((-1, 3))  # 设置x坐标的范围是-1到3
plt.ylim((-2, 8))  # 设置y坐标的范围是-2到8
plt.xlabel('I am x')  # 设置横坐标
plt.ylabel('I am y')  # 设置纵坐标

这段代码是设置坐标轴范围和显示坐标轴标签。

new_ticks = np.linspace(-1, 3, 5)
print(new_ticks)
plt.xticks(new_ticks)  # 设置横坐标为-1到3分为5个标记
plt.yticks([-2, 1, 4, 6, 8], [r'$really\ bad$', r'$bad\ \alpha$', r'$common$', r'$good$', r'$very\ good$'])

这段代码是设置坐标轴刻度


import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-3, 3, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y1的函数
y2 = x ** 2  # 写出y2的函数
plt.figure(1, figsize=(8, 5))  # 给图像序号和大小设置长为8宽为5
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
"""以x为横坐标,y1为纵坐标画图,设置线的颜色红色,线宽1.0,线的类型虚线"""
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.xlim((-1, 3))  # 设置x坐标的范围是-1到3
plt.ylim((-2, 8))  # 设置y坐标的范围是-2到8
plt.xlabel('I am x')  # 设置横坐标
plt.ylabel('I am y')  # 设置纵坐标
new_ticks = np.linspace(-1, 3, 5)
print(new_ticks)
plt.xticks(new_ticks)  # 设置横坐标为-1到3分为5个标记
plt.yticks([-2, 1, 4, 6, 8], [r'$really\ bad$', r'$bad\ \alpha$', r'$common$', r'$good$', r'$very\ good$'])
# 将纵坐标分成5种图标
plt.show()  # 将画的图显示出来,必不可少

在这里插入图片描述

5. 去除坐标轴边框和坐标轴原点化

ax = plt.gca()  # 取出画好的图给ax
ax.spines['right'].set_color('none')  # 将右边框去掉
ax.spines['top'].set_color('none')  # 将上边框去掉

这段代码是去除坐标轴边框。

ax.xaxis.set_ticks_position('bottom')  # 设置底部边框为x轴,默认也是底部边框为x轴
ax.yaxis.set_ticks_position('left')  # 设置左边边框为y轴,默认也是左边边框为y轴
ax.spines['bottom'].set_position(('data', 0))  # 将x轴经过y轴的0
ax.spines['left'].set_position(('data', 0))  # 将y轴经过x轴的0

这段代码是坐标轴原点化。

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-3, 3, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y1的函数
y2 = x ** 2  # 写出y2的函数
plt.figure(1, figsize=(8, 5))  # 给图像序号和大小设置长为8宽为5
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
"""以x为横坐标,y1为纵坐标画图,设置线的颜色红色,线宽1.0,线的类型虚线"""
plt.plot(x, y2)  # 以x为横坐标,y2为纵坐标画图
plt.xlim((-1, 3))  # 设置x坐标的范围是-1到3
plt.ylim((-2, 8))  # 设置y坐标的范围是-2到8
plt.xlabel('I am x')  # 设置横坐标
plt.ylabel('I am y')  # 设置纵坐标
new_ticks = np.linspace(-1, 3, 5)
print(new_ticks)
plt.xticks(new_ticks)  # 设置横坐标为-1到3分为5个标记
plt.yticks([-2, 1, 4, 6, 8],
           [r'$really\ bad$', r'$bad\ \alpha$', r'$common$', r'$good$', r'$very\ good$'])
# 将纵坐标分成5种图标

# gca = 'get current axis'
ax = plt.gca()  # 取出画好的图给ax
ax.spines['right'].set_color('none')  # 将右边框去掉
ax.spines['top'].set_color('none')  # 将上边框去掉
ax.xaxis.set_ticks_position('bottom')  # 设置底部边框为x轴,默认也是底部边框为x轴
ax.yaxis.set_ticks_position('left')  # 设置左边边框为y轴,默认也是左边边框为y轴
ax.spines['bottom'].set_position(('data', 0))  # 将x轴经过y轴的0
ax.spines['left'].set_position(('data', 0))  # 将y轴经过x轴的0

plt.show()  # 将画的图显示出来,必不可少

在这里插入图片描述

6. 图例

plt.legend(handles=[l1, l2, ], labels=['down', 'up'], loc='best')
"""图例的设置,参数handle便于自己是手动控制,label是图线的标签,loc是设置图例的位置"""

这段代码是设置图例。

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-3, 3, 50)  # 生成-1到1的50等分数据为横坐标
y1 = 2 * x + 1  # 写出y1的函数
y2 = x ** 2  # 写出y2的函数
plt.figure(1, figsize=(8, 5))  # 给图像序号和大小设置长为8宽为5
l1, = plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--', label='down')
"""以x为横坐标,y1为纵坐标画图,设置线的颜色红色,线宽1.0,线的类型虚线,设置图像标签"""
l2, = plt.plot(x, y2, label='up')  # 以x为横坐标,y2为纵坐标画图
# l1, l2, 这样写是为了让参数传递给legend函数
plt.legend(handles=[l1, l2, ], labels=['down', 'up'], loc='best')
"""图例的设置,参数handle便于自己是手动控制,label是图线的标签,loc是设置图例的位置"""
plt.xlim((-1, 3))  # 设置x坐标的范围是-1到3
plt.ylim((-2, 8))  # 设置y坐标的范围是-2到8
plt.xlabel('I am x')  # 设置横坐标
plt.ylabel('I am y')  # 设置纵坐标
new_ticks = np.linspace(-1, 3, 5)
print(new_ticks)
plt.xticks(new_ticks)  # 设置横坐标为-1到3分为5个标记
plt.yticks([-2, 1, 4, 6, 8],
           [r'$really\ bad$', r'$bad\ \alpha$', r'$common$', r'$good$', r'$very\ good$'])
# 将纵坐标分成5种图标

# gca = 'get current axis'
ax = plt.gca()  # 取出画好的图给ax
ax.spines['right'].set_color('none')  # 将右边框去掉
ax.spines['top'].set_color('none')  # 将左边框去掉
ax.xaxis.set_ticks_position('bottom')  # 设置底部边框为x轴,默认也是底部边框为x轴
ax.yaxis.set_ticks_position('left')  # 设置左边边框为y轴,默认也是左边边框为y轴
ax.spines['bottom'].set_position(('data', 0))  # 将x轴经过y轴的0
ax.spines['left'].set_position(('data', 0))  # 将y轴经过x轴的0

plt.show()  # 将画的图显示出来,必不可少

在这里插入图片描述

7. 文本标注

plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})
# 设置文本的位置和内容,大小和颜色

这段代码是设置文本。

import matplotlib.pyplot as plt  # 导入matplotlib库画图
import numpy as np  # 导入numpy库产生数据

x = np.linspace(-3, 3, 50)  # 生成-1到1的50等分数据为横坐标
y = 2 * x + 1  # 写出y的函数

plt.figure(num=1, figsize=(8, 5))
plt.plot(x, y)

ax = plt.gca()
ax.spines['right'].set_color('none')  # 将右边框去掉
ax.spines['top'].set_color('none')  # 将左边框去掉
ax.xaxis.set_ticks_position('bottom')  # 设置底部边框为x轴,默认也是底部边框为x轴
ax.yaxis.set_ticks_position('left')  # 设置左边边框为y轴,默认也是左边边框为y轴
ax.spines['bottom'].set_position(('data', 0))  # 将x轴经过y轴的0
ax.spines['left'].set_position(('data', 0))  # 将y轴经过x轴的0

plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$',
         fontdict={'size': 16, 'color': 'r'})
# 设置文本的位置和内容,大小和颜色

plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/634798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用Docker实现分布式Web自动化!

1、前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述在docker中使用浏览器进行自动化测试如果可以实现可视化,同时可以对浏览器进行相关的操作。 如果你想学习自动化测…

【动态规划专栏】-- 回文串问题 -- 动态规划经典题型

目录 动态规划 动态规划思维(基础) 状态表示(最重要) 状态转移方程(最难) 初始化(细节) 填表顺序(细节) 返回值(结果) 回文子串…

浮点型进制转换 和 与或非(逻辑短路)

正数的反码是其本身 负数的补码是其反码1 原码 十进制数据的二进制表现形式 byte b 13 1101(13的十进制)byte代表占存储的一个字节(1字节等于8位) 此时13的在存储里的形式 0000 1101 (原码最左边0为正&#…

物联网Lora模块从入门到精通(六)OLED显示屏

一、前言 获取到数据后我们常需要在OLED显示屏上显示&#xff0c;本文中我们需要使用上一篇文章(光照与温湿度数据获取)的代码&#xff0c;在其基础上继续完成本文内容。 基础代码&#xff1a; #include <string.h> #include "board.h" #include "hal_ke…

Spring boot之WEB 开发-静态资源访问--自定义转换器--处理JSON--内容协商

Spring boot之WEB 开发-静态资源访问 官方文档 在线文档: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.develo\ping-web-applications 基本介绍 1. 只要静态资源放在类路径下&#xff1a; /static 、/public 、/resources 、/M…

2023-06-11:redis中,如何在100个亿URL中快速判断某URL是否存在?

2023-06-11&#xff1a;redis中&#xff0c;如何在100个亿URL中快速判断某URL是否存在&#xff1f; 答案2023-06-11&#xff1a; 传统数据结构的不足 当然有人会想&#xff0c;我直接将网页URL存入数据库进行查找不就好了&#xff0c;或者建立一个哈希表进行查找不就OK了。 …

【Java】数组是引用类型

【Java】数组是引用类型 Java虚拟机运行时的数据区基本类型变量与引用类型变量的区别 Java虚拟机运行时的数据区 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址。 虚拟机栈(JVM Stack): 与方法调用相关的一些信息&#xff0c;每个方法在执行时&a…

【算法系列 | 5】深入解析排序算法之——快速排序

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 决定开一个算法专栏&#xff0c;希望能帮助大…

【日志解析】【频率分析】ULP:基于正则表达式和本地频率分析进行日志模板提取

An Effective Approach for Parsing Large Log Files 文章目录 An Effective Approach for Parsing Large Log Files1 论文出处2 背景2.1 背景介绍2.2 针对问题2.3 创新点 3 主要设计思路3.1 预处理3.2 日志事件分组3.3 通过频率分析生成日志模板 4 实验设计4.1 准确性4.2 效率…

物联网Lora模块从入门到精通(八)Lora无线通信

一、前言 在某些环境下&#xff0c;无法通过有线传输数据&#xff0c;这时候我们需要使用Lora无线通信传输数据&#xff0c;Lora无线数据传输具有低功耗、距离长的特点&#xff0c;常用于工厂内等&#xff0c;需要Lora基站。 我曾做过距离测试&#xff1a;Lora模块距离测试-物联…

【Pytest实战】pytest 基本概念及使用大全

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

Spring6-02

JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板&#xff0c;是对JDBC的封装&#xff0c;简化了JDBC代码。当然也可以不用JdbcTemplate&#xff0c;可以让Spring集成其他的ORM框架&#xff0c;例如MyBatis、Hibernate等。接下来使用JdbcTemplate完成增删改查。 环境准备…

重写并自定义console.log()输出样式

0. 背景 笔者在开发的实践过程中对于控制台内容的输出情况有一些特殊的需求&#xff0c;然而&#xff0c;普通的console.log()函数不能提供很好的支持&#xff0c;因此需要探索一些自定义的实现方式&#xff0c;以便满足开发需求&#xff0c;一些开发需求如下&#xff1a; 输…

编译详细过程与交叉编译

GCC的编译过程&#xff1a; GCC编译分为四步&#xff0c;预处理、编译、汇编、链接。具体功能如上图所示&#xff0c;我们在稍微解释一下&#xff1a; 1.预处理&#xff1a; 实现过程&#xff1a;gcc -E xxx.c -o xxx.i 目的&#xff1a;我们的c程序中除了main函数以外&…

如何在Linux中使用read命令读取用户输入?——read命令实战

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第64篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望对你有用。 今天我们一…

实现jvm内存溢出

那么我们如何来构建一个堆内存溢出呢&#xff1f;其实很简单&#xff0c;我们只要定义一个List对象&#xff0c;然后通过一个循环不停的往List里面塞对象。因为只要Controller不被回收&#xff0c;那么它里面的成员变量也是不会被回收的。这样就会导致List里面的对象越来越多&a…

Play wright自动化测试工具该如何更加完美地使用

目录 1.1 拦截网络请求 1.2 pytest 管理用例 1.3 PO模型 1.4 API 和 UI 自动化测试融合 1.5 数据驱动 1.6 动态挑选用例执行 1.6 Allure测试报告 1.7 持续集成 1.1 拦截网络请求 网络拦截&#xff1a; 无响应 pass 中止 route.abort("aborted") 放行 route…

Hazel游戏引擎(013)Layers游戏的层级

文中若有代码、术语等错误&#xff0c;欢迎指正 文章目录 前言增加Layer后的主要类图项目相关代码项目流程效果 LayerStack类的错误 前言 此节目的 为完成008事件系统设计的第四步&#xff0c;将事件从Application传递分发给Layer层。 使引擎事件系统模块完整 Layer的理解 …

在VSCode下利用PlateFormIO开发Arduino的MicroROS遇到的一些问题

简介 我是按照鱼香ROS的教程【3.搭建PlateFormIO开发环境】进行的&#xff0c;但是在进行的过程中&#xff0c;遇到了一些问题&#xff0c;这里记录下来&#xff0c;供有同样问题的同学进行参考。其实只要你使用的板子的MCU是ESP32&#xff0c;都可以按照他这个教程进行操作。…

k8s实践之mysql集群搭建(十五)

先下载 k8s实践之mysql集群搭建资料 主从模式简介&#xff1a; 当master主服务器上的数据发生改变时&#xff0c;则将其改变写入二进制&#xff08;binlog&#xff09;事件日志文件中&#xff1b; slave从服务器会在一定时间间隔内对master主服务器上的二进制日志进行探测&am…