python matplotlib绘图总结

2023-05-16

目录

1、画线

a、常规画线: matplotlib.pyplot.plot()

1)线的颜色、风格、标记点形状

2)一图多线,并加图例

b、非均匀画线 semilogy()

c、给特定的点打标签

2、散点图

3、画矩阵

4、自定义坐标轴显示内容 xticks()/yticks()


官网教程:Plot types — Matplotlib 3.5.2 documentation

1、画线

a、常规画线: matplotlib.pyplot.plot()

该部分内容包含:(常规画线、颜色、线条风格、坐标轴标签、一图多线、图例)的设置方法。

定义:

plot(*args, scalex=True, scaley=True, data=None, **kwargs)

用法:

对于一般的函数 y=f(x),可以直接绘制:plt.plot(x, y),当省略x坐标时 plt.plot(y),默认x坐标从零开始依次递增1个单位长度。

# 在[0, 30]范围内均匀取30个点
x_data = np.linspace(0, 10, 30)
y_data = np.sin(x_data)
# 画图,第一个参数是x值,第二个是y值
plt.plot(x_data, y_data)
# 坐标轴标签
plt.ylabel("sin(x)")  # y轴
plt.xlabel("x")  # x轴
# 图的标题
plt.title("y=sin(x)")
# 画图
plt.show()

使用 plt.title("y=sin(x)") 可以设置图的标题,使用 plt.ylabel() 函数设置坐标轴标签,最终图像的显示使用 plt.show() 函数

1)线的颜色、风格、标记点形状

线的颜色使用 color 属性设置,线的风格linestyle 属性设置,每个采样点处的标记形状marker 属性设置如 设置洋红色虚线并用下三角标记每个采样点:

plt.plot(y_data, color='m', marker='v', linestyle='--')

matplotlib 的所有颜色设置方法都类似,可选的颜色如下,属性设置中可以使用首字母或者全拼。

character

color

'b'

blue    蓝色

'g'

green  绿色

'r'

red      红色

'c'

cyan    蓝绿色(青色)

'm'

magenta 品红(洋红)—我也不知道这是啥shair,品红(R:128 G:0 B:128)

'y'

yellow 黄色

'k'

black   黑色

'w'

white   白色

可选的线条风格如下:

character

description

'-'

实线

'--'

虚线

'-.'

点实线

':'

点线

可选的所有标记形状如下:(不太好翻译的就用原英文描述代替了)

character

description

'.'

','

像素

'o'

圆圈

'v'

下三角  triangle_down marker

'^'

上三角

'<'

左三角

'>'

右三角

'1'

tri_down marker  

'2'

tri_up marker

'3'

tri_left marker

'4'

tri_right marker

'8'

八边形  octagon marker

's'

四边形  square marker

'p'

五边形 pentagon marker

'P'

注意是大写P。plus (filled) marker

'*'

星标  star marker

'h'

六边形1  hexagon1 marker

'H'

hexagon2 marker

'+'

加号  plus marker

'x'

x号 x marker

'X'

x (filled) marker

'D'

菱形  diamond marker

'd'

thin_diamond marker

'|'

vline marker

'_'

hline marker

上例中的三种属性还可以使用组合形式符号:

plt.plot(y_data, 'm--v')

2)一图多线,并加图例

一图多线直接使用多个 plot 函数即可,图例在 plot 函数中通过 label 属性设置,并使用 legend() 函数设置显示位置,如下:

# 在[0, 30]范围内均匀取30个点
x = np.linspace(0, 10, 30)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(y1, 'm-v', label='sin')  # y1曲线标签为sin
plt.plot(y2, 'g-o', label='cos')  # y2曲线标签为cos
plt.ylabel("sin(x)/cos(x)")
plt.xlabel("x")
# 给图片在右上角添加图例
plt.legend(loc=0)
plt.title("multi-lines")
plt.show()

效果,注意各种标签出现的位置:

b、非均匀画线 semilogy()

有时可能会遇到数据跨度比较长但大部分数据可能集中在一段区域的情况,这时可以使用 semilogy() 函数来绘制曲线,最终的效果是将函数值取对数后绘制曲线。semilogx() 的用法类似。

比如通信领域常用的不同SNR下的BER曲线就是这样的情况,例子如下:

可以使用 plt.grid(True) 函数设置显示网格线。

SNR = [0, 5 ,10, 15, 20, 25, 30]
result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
plt.semilogy(result, 'm--v', label='SNR-BER')  # 对 result 取 log 后画线
plt.xlabel("SNR")
plt.ylabel("BER")
plt.title("log-line")
plt.legend(loc=0)
plt.grid(True)  # 显示网格线
plt.show()

结果如下,注意 y 轴的坐标取值情况:

c、给特定的点打标签

对于特殊的点,想标记出其对应的值,可以使用 plt.text(a, b, val, color='r') 函数。

如给上例第四个点标注下具体地值,可以添加以下语句:

plt.text(SNR[3], result[3], result[3], color = 'r')  # 标注第 4 个点的值

效果:

2、散点图

散点图主要使用 matplotlib.pyplot.scatter() 函数:

定义:matplotlib.pyplot.scatter — Matplotlib 3.5.2 documentation

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

除了 x,y其他都是可选参数,同样有 marker、color 参数,这俩参数用法与 plot 一样。

SNR = [0, 5 ,10, 15, 20, 25, 30]
result = [0.15, 0.08, 0.03, 0.015, 0.005, 0.001, 0.0008]
# 散点图
plt.scatter(SNR, result, marker='v', color='b', label='SNR-BER')
plt.xlabel("SNR")
plt.ylabel("BER")
plt.title("log-line")
plt.legend(loc=0)
plt.grid(True)  # 显示网格线
plt.show()

3、画矩阵

可以使用 matplotlib.pyplot.matshow() 函数绘制二维矩阵的图像。

这一般在矩阵可视化的时候用的比较多。另外可以使用 colorbar() 函数设置显示颜色标记。

比如绘制一个对角矩阵的图像:

# 创建对角矩阵
a = np.diag(range(15))
fig = plt.matshow(a)
# 显示颜色标记
plt.colorbar(fig.colorbar, fraction=0.2)
plt.show()

效果如下:

4、自定义坐标轴显示内容 xticks()/yticks()

如果坐标轴想用其他字符显示,可以使用 xticks() / yticks() 函数。函数第一个参数是原来的坐标显示列表,第二个参数是实际的显示字符。

# 创建对角矩阵
a = np.diag(range(5))
fig = plt.matshow(a)
# 显示颜色标记
plt.colorbar(fig.colorbar, fraction=0.2)
# 自定义 y 轴显示内容
plt.yticks(range(5),
           ['A', 'B', 'C', 'D', 'E'])
plt.show()

效果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python matplotlib绘图总结 的相关文章

  • day03 timer

    一 回忆 计算机体系结构 总线的概念 数据总线 地址总线 控制总线 如 xff1a 0x12345678上放0x100 AHB AHB1 AHB2 APB1 APB2 编译原理 hello c 预处理 xff08 预处理器 xff09 he
  • ubuntu安装CMake

    CMake是什么呢 xff1f 根据百度百科的解释 xff0c CMake是一个跨平台的安装 xff08 编译 xff09 工具 xff0c 可以用简单的语句来描述所有平台的安装 编译过程 xff0c 能够输出各种各样的makefile或者
  • Ubuntu安装ifconfig工具

    安装命令 xff1a sudo apt install net tools
  • 通关必读—linux面试题(带答案)

    答案linux考试题 1 在登录Linux时 xff0c 一个具有唯一进程ID号的shell将被调用 xff0c 这个ID是什么 b A NID B PID C UID C CID 答 xff1a w命令查看用户tty终端信息 ps ef
  • shell判断整数变量的奇偶性

    为了简化问题和突出重点 xff0c 这里我们假设脚本的输入参数一定为合法的整数类型 xff0c 因而在脚本内部将不再进行参数的合法性判断 span class token punctuation span root 64 xieqichao
  • 《云计算全栈》-python篇:编写石头剪刀布小游戏、附带升级脚本-循环版石头剪刀布小游戏

    3 案例3 xff1a 编写石头剪刀布小游戏 3 1 问题 编写game py脚本 xff0c 实现以下目标 xff1a 计算机随机出拳 玩家自己决定如何出拳 代码尽量简化 123 3 2 方案 引用random模块生成0 2的随机数 xf
  • pytorch 层标准化 LayerNorm 的用法

    目录 1 为什么要标准化 xff08 理解的直接跳过到这部分 xff09 2 LayerNorm 解释 3 举例 只对最后 1 个维度进行标准化 4 举例 对最后 D 个维度进行标准化 1 为什么要标准化 xff08 理解的直接跳过到这部分
  • Python全套语法

    目录 学Python你应该get到的三句话 xff01 跟紧潮流不是随波逐流 xff01 投靠大佬不是投机取巧 xff01 赚取利益不是急功近利 xff01 Python全套语法重磅来袭 xff01 初识python之概念认知篇 初识pyt
  • 初识python之元组列表篇

    我们知道python的数据类型有 字符串 xff0c 数字 xff0c 列表 xff0c 元组 xff0c 字典 xff0c 函数等 xff0c 这些都是我们在进行实际开发中 xff0c 必备的一些基础性语法 xff0c 本期文章 xff0
  • Python如何把字典写入到CSV文件

    在实际数据分析过程中 xff0c 我们分析用Python来处理数据 xff08 海量的数据 xff09 xff0c 我们都是把这个数据转换为Python的对象的 xff0c 比如最为常见的字典 比如现在有几十万份数据 xff08 当然一般这
  • C 判断

    C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件 xff0c 以及条件为真时要执行的语句 xff08 必需的 xff09 和条件为假时要执行的语句 xff08 可选的 xff09 C 语言把任何非零和非空的值假定为 true x
  • C 数组

    lt div class 61 34 article intro 34 id 61 34 content 34 gt C 数组 C 语言支持数组数据结构 xff0c 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据
  • 为什么访问亚马逊的网站卡顿?

    lt h4 class 61 34 sectiontitle 34 gt 为什么访问亚马逊的网站卡顿 xff1f lt h4 gt 购买了 华北 北京四 的服务器 xff0c 在亚马逊开办了跨境电商网站 xff0c 使用过一段时间后 xff
  • 一文了解公有云、私有云、混合云、边缘云、专有云、分布式云

    1 公有云 公有云是为大众建的 xff0c 所有入驻用户都称租户 xff0c 不仅同时有很多租户 xff0c 而且一个租户离开 xff0c 其资源可以马上释放给下一个租户 xff0c 一如饭店里一桌顾客走了马上迎来下一桌顾客 公有云是最彻底
  • 区块链基本概念

    传统商业网络 在当前传统商业网络中 xff0c 作为整个商业网络的参与方 xff0c 各商业机构及政府 金融机构等各方独立 系统不通 xff0c 各自维护自己的数据 当发生交易时 xff0c 交易双方修改各自账本并本地维护 xff0c 形成
  • ChatGPT——OpenAI推出的人工智能聊天机器人

    ChatGPT OpenAI推出的人工智能聊天机器人 目录 隐藏 1 什么是ChatGPT 2 ChatGPT的应用领域 3 3 ChatGPT的原理 4 ChatGPT的发展历程 5 ChatGPT爆火的原因 6 ChatGPT带来的变革
  • HBase

    架构设计 核心概念 xff1a Client xff1a 发起读写请求的角色 xff0c 面向hbase client 编程 首先hbase查询Meta表 xff0c 找到读或写的数据的region区域位置信息 然后向region对应的HR
  • python 数组的排列与组合:combinations 与 permutations

    combinations 与 permutations 函数在python 的 itertools 库中 xff0c 因此在使用前需要 import itertools combinations 函数的作用就是罗列出所有数组中 n 个元素的
  • 在STM32下完成一个基于FreeRTOS的多任务程序

    在STM32下完成一个基于FreeRTOS的多任务程序 一 FreeRTOS简述二 MDK下移植FreeRTOS三 总结 一 FreeRTOS简述 FreeRTOS是一个热门的嵌入式设备用即时操作系统核心 已被经成功移植到35种不同的微控制
  • 【K8S】Kubernetes集群搭建流程详解

    文章目录 一 购买云服务器二 搭建Docker环境三 根据K8S官网搭建 基础环境 四 安装K8S三剑客 xff1a kubelet kubeadm kubectl五 安装K8S节点需要使用的镜像六 使用kubeadm初始化Master节点

随机推荐

  • springBoot maven打包[分层打包]

    打jar包 xff0c 很大 xff0c 发服务器也慢 get到一种打包方式 直接挨着cv直接就能用 一 src目录下创建assembly文件夹下assembly xml lt assembly xmlns 61 34 http maven
  • 链表-倒序排列鏈表

    剑指 Offer 06 从尾到头打印链表 38 输入一个链表的头节点 xff0c 从尾到头反过来返回每个节点的值 xff08 用数组返回 xff09 示例 1 xff1a 输入 xff1a head 61 1 3 2 输出 xff1a 2
  • 使用远程桌面链接CentOS 7

    需求 xff1a Gnome桌面环境 Xrdp Xrdp是Microsoft远程桌面协议 RDP 的开源实现 xff0c 它允许您以图形方式控制远程系统 Gnome安装 yum groupinstall 34 GNOME Desktop 3
  • vscode的下载速度会特别慢问题处理

    1 xff0c 下载太慢大部分是因为VSCODE官网服务器跟我们国内的链接速度有关 xff0c 当我们去官网下载会出现下面的情况 2 xff0c 复制下载的链接 xff0c 并且修改红框中的内容为 span style background
  • Dockerfile

    Dockerfile Dockerfile基本结构指令FROMMAINTAINERRUNCMDEXPOSEENVADDCOPYENTRYPOINTVOLUMEUSERWORKDIRONBUILD 创建镜像 Dockerfile 基本结构 D
  • 使用git时本地代码被覆盖怎么办

    1 遇事不要慌 xff0c 看本地历史记录 右键要想要恢复的代码或文件夹 61 右键 61 Local History 61 gt Show History 2 我一下就找到了本地历史记录 看右边有了不同时间的代码 xff0c 去点一下试试
  • Ubuntu截图工具flameshot的安装与快捷键设置

    https blog csdn net sexyluna article details 105884224
  • moveit配置过后gazebo加载不出来机械臂模型的问题

    我使用moveit setup assistant对dubot magician机械臂的urdf进行配置 xff0c 配置完成后发现运行gazebo launch可以打开gazebo xff0c 但是却什么也没有 xff0c 机械臂模型加载
  • 上传本地项目代码到GitHub的方法

    预备知识 xff1a 有一个GitHub账号 xff0c 然后知道怎么进GitHub网页 之前往GitHub上传代码都是现场百度找指令操作的 xff0c 从来不记 xff0c 这次干脆做个记录当个笔记吧 Git是一个版本控制软件 xff0c
  • 单片机之蜂鸣器

    蜂鸣器简介 无源蜂鸣器 xff1a 有绿色电路板的一种 有源蜂鸣器 xff1a 没有电路板用黑胶封闭的一种 其实蜂鸣器的种类有很多 例如 xff1a 电磁式蜂鸣器 xff1a 由振荡器 电磁线圈 磁铁 振动膜片及外壳组成 同时电磁式蜂鸣器也
  • Centos Stream 9 安装 Docker 23.0.2 社区版 官方安装教程

    目录 一 内核的版本必须大于3 10使用下面的命令来检查是否满足docker的要求 xff0c 进行依赖性检查 二 安装docker容器引擎 xff0c 需要一个具有sudo权限的账户登录进行操作 1 更新现有yum包 2 遇到提示请输入y
  • AttributeError: module numpy has no attribute int .报错解决方案

    在训练YOLO模型时突然发现这个报错 xff0c 后来发现是numpy版本问题 xff0c yolo官方给的是大于等于1 18 5 xff0c 当你执行pip install r requirements txt命令时 xff0c 他默认安
  • 单片机(嵌入式)程序分层架构

    目录 前言 嵌入式3层软件架构 嵌入式4层软件架构 1 驱动层 操作系统层 中间件层 应用层 嵌入式4层软件架构 2 硬件层 嵌入式微处理芯片 嵌入式存储器系统 嵌入式I O接口 中间层 系统软件层 RTOS 文件系统 GUI 应用层 嵌入
  • FreeRTOS笔记—第一章 FreeRTOS概述

    1 1 认识FreeRTOS 1 1 1 什么是操作系统 操作系统 xff08 Operating System xff0c 简称OS xff09 是管理计算机硬件与软件资源的计算机程序 简单说就是一种管理计算机资源的软件 目的是为了高效
  • 嵌入式工程师 面试题 集-C语言

    预编译 1 什么是预编译 xff0c 何时需要预编译 答 xff1a 预编译又称预处理 就是做些代码文本的替换工作 开头的指令 xff0c 比如拷贝 include 包含的文件代码 xff0c define 宏定义的替换 xff0c 条件编
  • 嵌入式工程师面试题集-MCU_STM32

    一 选择题 1 Cortex M处理器采用的架构是 xff08 D xff09 xff08 A xff09 v4T xff08 B xff09 v5TE xff08 C xff09 v6 xff08 D xff09 v7 2 NVIC可用来
  • 嵌入式工程师面试题集汇总

    主观问题 主观问题 介绍类 请自我介绍 xff1f 为什么不留在xx公司 xff08 为啥离职 xff09 xff1f 你5 10年职业规划是怎样的 xff1f 你还写代码吗 xff1f 从工程师到管理再到工程师你是怎样想的或能承受吗 把你
  • C++解决实际问题 ——a的三次方(accode)

    hello大家好 xff0c 在下 小侠雨落 xff0c 几天不见 xff0c 甚是想念啊 xff01 不说了 xff0c 上标题 a的三次方 咳咳 xff0c 题目描述输入一个整数 a xff0c 输出 a 的三次方 输入格式 一行 xf
  • [CVPR2018]Bottom-Up and Top-Down Attention for Image Captioning and Visual Question Answering

    Bottom Up and Top Down Attention 附 xff1a 论文下载地址 主要贡献 提出了一个新的LSTM组合模型 xff0c 包括了attention LSTM和language LSTM 两个组件 在这个组合模型的
  • python matplotlib绘图总结

    目录 1 画线 a 常规画线 xff1a matplotlib pyplot plot 1 xff09 线的颜色 风格 标记点形状 2 xff09 一图多线 xff0c 并加图例 b 非均匀画线 semilogy c 给特定的点打标签 2