Matplotlib-绘图基础

news2024/9/20 22:36:14

文章目录

  • 一、安装Matplotlib
  • 二、基本绘图流程
    • 1.创建画布与创建子图
    • 2.基本绘图
      • 1).绘制线条
      • 2).设置线型、线宽
        • 格式化字符
        • 颜色的缩写
      • 3).设置坐标轴范围
      • 4).设置坐标刻度
      • 5).设置坐标轴
      • 6)备注
  • 三、高级绘图
    • 1)plt对象支持的图类型
    • 2)散点图

一、安装Matplotlib

Matplotlib是一个综合库,用于在Python中创建静态,动画和交互式可视化。

# 安装matplotlib
pip install matplotlib
# 导入
import matplotlib.pyplot as plt
# 在当前页面中显示图片%matplotlib inline

Matplotlib 的默认配置都允许用户自定义。你可以调整大多数的默认配置:图片大小和分辨率(dpi)、线宽、颜色、风格、坐标轴、坐标轴以及网格的属性、文字与字体属性等。不过,matplotlib 的默认配置在大多数情况下已经做得足够好,你可能只在很少的情况下才会想更改这些默认配置。

二、基本绘图流程

在这里插入图片描述

1.创建画布与创建子图

第一部分主要作用是构建出一张空白的画布,并可以选择是否将整个画布划分为多个部分,方便在同一幅图上绘制多个图形的情况。最简单的绘图可以省 略第一部分,而后直接在默认的画布上进行图形绘制。

函数名称函数作用
plt.figure创建一个空白画布,可以指定画布大小,像素。
figure.add_subplot创建并选中子图,可以指定子图的行数,列数,与选中图片编号。
import numpy as np
import matplotlib.pyplot as plt
# 创建画布
figure = plt.figure()
# 设置图表大小
plt.rcParams['figure.figsize'] = (8,6)
# 创建子图
plt.subplot()
# 绘制第1张子图:折线图
ax1 = plt.subplot(221)
plt.plot([1,2,3],[2,4,6])
# 绘制第2张子图:柱状图
ax2 = plt.subplot(222)plt.bar([1,2,3],[2,4,6])
# 绘制第3张子图:散点图
ax3 = plt.subplot(223)
plt.scatter([1,3,5],[2,4,6])
# 绘制第4张子图:直方图
ax4 = plt.subplot(224)
plt.hist([2,2,2,3,4])
# 创建子图
fig, axes = plt.subplots(nrows=2,ncols=2,figsize=(10,8))
ax1,ax2,ax3,ax4 = axes.flatten()
# nrows表示行数,ncols表示列数,可以简写为plt.subplots(2,2),figsize参数设置图表尺寸为1000×800像素。
ax1.plot([1,2,3],[2,4,6]) # 绘制第一张子图
ax2.bar([1,2,3],[2,4,6]) # 绘制第二张子图
ax3.scatter([1,3,5],[2,4,6]) # 绘制第三张子图
ax4.hist([2,2,2,3,4]) # 绘制第四张子图

2.基本绘图

1).绘制线条

# 绘制简单直线
import numpy as np
import matplotlib.pyplot as plt
# 绘制简单直线
x = np.array([1, 2, 3, 4, 5])y = np.array([3, 6, 9, 12, 15])
# 绘制水平线、垂线
plt.axhline(y=6, ls=":", c="blue") # 添加水平直线
plt.axvline(x=4, ls=" ", c="red") # 添加垂直直线
# 绘制多段垂线
plt.vlines([2, 3, 3.5], # 垂线的x坐标值
[10, 20, 30], # 每条垂线起始y坐标[25, 35, 45]) # 每条垂线结束y坐标
plt.figure()
plt.plot(x, y)
plt.savefig('./test2.jpg') # 保存图片
plt.show() # 显示图片,阻塞方法

在这里插入图片描述

2).设置线型、线宽

linestyle: 设置线型,常见取值有实线(‘-’)、虚线(‘–’)、点虚线(‘-.’)、点线(‘:’)
linewidth:线宽
color:颜色(red, blue, green)
alpha: 设置透明度(0~1之间)

格式化字符
字符描述
’ - ’实线样式
’ - - ’短横线样式
‘-.’点划线样式
‘:’虚线样式
‘.’点标记
‘,’像素标记
‘o’圆标记
‘v’倒三角标记
‘^’正三角标记
‘<’左三角标记
‘>’右三角标记
‘1’下箭头标记
‘2’上箭头标记
‘3’左箭头标记
‘4’右箭头标记
‘s’正方形标记
‘p’五边形标记
‘*’星形标记
‘h’六边形标记 1
‘H’六边形标记 2
‘+’加号标记
‘x’X 标记
‘D’菱形标记
‘d’窄菱形标记
颜色的缩写
字符颜色
‘b’蓝色
‘g’绿色
‘r’红色
‘c’青色
‘m’品红色
‘y’黄色
‘k’黑色
‘w’白色

示例:绘制正弦、余弦曲线,并设置线型、线宽、颜色、透明度

# 绘制正弦曲线
import numpy as np
import matplotlib.pyplot as pltimport math
x = np.arange(0, 2 * np.pi, 0.1) # 以0.1为单位,生成0~6的数据print(x)
y1 = np.sin(x)
y2 = np.cos(x)
# 绘制图形
plt.plot(x, y1, label="sin", linewidth=2) # 实线,线宽2像素
plt.plot(x, y2, label="cos", linestyle=" ", linewidth=4) # 虚线,线宽4像素
plt.xlabel("x") # x轴文字
plt.ylabel("y") # y轴文字
# 设置坐标轴范围
plt.xlim(0, 2 * math.pi)plt.ylim( 1, 2)
plt.title("sin & cos") # 图标题
plt.legend() # 图例plt.show()

在这里插入图片描述

3).设置坐标轴范围

#x limt min: <float> x轴范围最小值
#x limit max: <float> x轴范围最大值
plt.xlim(x limt min, x limit max)
#y limt min: <float> y轴范围最小值
#y limit max: <float> y轴范围最大值
plt.ylim(y limt min, y limit max)

4).设置坐标刻度

#x val list: x轴刻度值序列
#x text list: x轴刻度标签文本序列 [可选]
plt.xticks(x val list , x text list)
#y val list: y轴刻度值序列
#y text list: y轴刻度标签文本序列 [可选]
plt.yticks(y val list , y text list)

绘制二次函数曲线

# 绘制二次函数曲线
import numpy as np
import matplotlib.pyplot as plt
import math
x = np.arange(-5, 5, 0.1) # 以0.1为单位,生成 5~5的数据
print(x)
y = x ** 2
# 绘制图形
plt.plot(x, y, label="$y = x ^ 2$",
        linewidth=2, # 线宽2像素
        color="red", # 颜色
        alpha=0.5) # 透明度
plt.xlabel("x") # x轴文字
plt.ylabel("y") # y轴文字
# 设置坐标轴范围
plt.xlim(-10, 10)
plt.ylim(-1, 30)
# 设置刻度
x_tck = np.arange(-10, 10, 2)
x_txt = x_tck.astype("U")
plt.xticks(x_tck, x_txt)
y_tck = np.arange(-1, 30, 5)
y_txt = y_tck.astype("U")
plt.yticks(y_tck, y_txt)
plt.title("square") # 图标题
plt.legend(loc="upper right") # 图例 upper right, center
plt.show()

在这里插入图片描述

5).设置坐标轴

# 获取当前坐标轴字典,{'left':左轴,'right':右轴,'bottom':下轴,'top':上轴 }
ax = plt.gca()
# 获取其中某个坐标轴
axis = ax.spines['坐标轴名']
# 设置坐标轴的位置。 该方法需要传入2个元素的元组作为参数
# type: <str> 移动坐标轴的参照类型 一般为'data' (以数据的值作为移动参照值)
# val: 参照值
axis.set position(('data', val))
# 设置坐标轴的颜色
# color: <str> 颜色值字符串
axis.set color(color)
# 设置坐标轴格式
import matplotlib.pyplot as plt
ax = plt.gca()
axis b = ax.spines['bottom'] # 获取下轴
axis b.set position(('data', 0)) # 设置下轴位置, 以数据作为参照值
axis l = ax.spines['left'] # 获取左轴
axis l.set position(('data', 0)) # 设置左轴位置, 以数据作为参照值
ax.spines['top'].set color('none') # 设置顶部轴无色ax.spines['right'].set color('none') # 设置右部轴无色
plt.show()

在这里插入图片描述

6)备注

# 在图表中为某个点添加备注。包含备注文本,备注箭头等图像的设置。
plt.annotate(
	r'$\frac{\pi}{2}$',#备注中显示的文本内容
	xycoords='data',#备注目标点所使用的坐标系(data表示数据坐标系)
	xy=(x, y),#备注目标点的坐标
	textcoords='offset points', #备注文本所使用的坐标系(offset points表示参照点的偏移坐标系)
	xytext=(x, y),#备注文本的坐标
	fontsize=14,#备注文本的字体大小
	arrowprops=dict()#使用字典定义文本指向目标点的箭头样式
	)

三、高级绘图

1)plt对象支持的图类型

在这里插入图片描述

2)散点图

散点图(scatter diagram)又称为散点分布图,是以一个特征为横坐标,另一个特征为纵坐标,利用坐标点(散点)的分布形态反映特征间的统计关系的一种图形。
在这里插入图片描述
绘制散点图的相关API:

plt.scatter(
	x,# x轴坐标数组
	y,# y轴坐标数组
	marker='',# 点型
	s=10,# 大小
	color='',# 颜色
	edgecolor='',# 边缘颜色
	facecolor='',# 填充色
	zorder=''# 图层序号
)

案例:绘制平面散点图。

# 散点图示例
import matplotlib.pyplot as plt
import numpy as np
n = 40
# 期望值:期望值是该变量输出值的平均数
# 标准差:是反映一组数据离散程度最常用的一种量化形式,是表示精确度的重要指标
x = np.random.normal(172, 20 ,n ) # 期望值, 标准差, 生成数量
y = np.random.normal(60, 10, n) # 期望值, 标准差, 生成数量
x2 = np.random.normal(180, 20 ,n ) # 期望值, 标准差, 生成数量
y2 = np.random.normal(70, 10, n) # 期望值, 标准差, 生成数量
plt.figure("scatter", facecolor="lightgray")
plt.title("Scatter Demo")
plt.scatter(x, y, c="red", marker="D")
plt.scatter(x2, y2, c="blue", marker="v")
plt.xlim(100, 240)
plt.ylim(0, 100)
plt.show()

在这里插入图片描述

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

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

相关文章

【Linux】——进程概念(万字解读)

一 冯诺依曼体系结构 在此之前&#xff0c;我们先要理解我们计算机的冯诺依曼体系结构&#xff0c;因为是进程的基础 我们所有的操作其实都是基于这样一个模型&#xff0c;比如你在qq上&#xff0c;和别人发送消息&#xff0c;这个消息肯定是先通过输入设备进行输入&#xf…

Vue3学习 Day03

标签的ref属性 用ref标记dom元素 取代了用id来标识标签&#xff0c;因为用id来标识标签&#xff0c;如果父组件和子组件中有id一样的&#xff0c;会引起混淆。 用ref标记组件 子组件 向父亲暴露name&#xff0c;age&#xff0c;classroom&#xff08;非响应式&#xff09; …

make/Makefile -基本使用

文章目录 一、make/Makefile 的认识makeMakefile 二、make/Makefile 基本使用创建项目清理项目make 指令的使用 三、makefile 的几个语法关键字 PHONY :$ :变量 : 四、makefile的语法推导过程 一、make/Makefile 的认识 我们一般使用 Visual Studio&#xff08;下面简称 VS&am…

【秋招笔试题】米小游的植树工

解法&#xff1a;若区间覆盖的最小值大于等于2&#xff0c;则有他没他没影响&#xff0c;反之则不能算。所以一开始差分数组预处理区间加&#xff0c;然后ST表查最小值即可。 package com.sky;import java.util.Scanner; import java.util.Arrays;public class Test1 {static …

代码随想录——合并区间(Leetcode hot14)

题目链接 思路&#xff1a; 合并区间分为两种情况&#xff1a; 前一个数组右边界 > 后一个数组左边界 eg:[1,3],[2,6] > 合并为[1,6]前一个数组右边界 > 后一个数组右边界 eg:[1,6],[2,4] > 合并为[1,6] class Solution {public int[][] merge(int[][] intervals)…

XSS小游戏(题目+解析)DOM破坏!!!

文章目录 一、Ma Spaghet!二、Jefff三、Ugandan Knuckles四、Ricardo Milos五、Ah Thats Hawt六、Ligma七、Mafia方法一&#xff1a;可以用匿名函数来试试方法二&#xff1a;利用toString方法方法三&#xff1a;利用location和hash切片slice 八、Ok, Boomer九、svg十、DOM破坏十…

【Qt】QWidget的focusPolicy属性

QWidget的focusPolicy属性 设置控件获取到焦点的策略。 所谓“焦点”&#xff0c;就是能选中这个元素。 计算机中的“焦点”&#xff0c;对于键盘操作非常明显。 例如&#xff1a;界面上有一个输入框&#xff0c;此时必须要选中这个输入框&#xff0c;接下来键盘按键才会输入到…

数学建模预测类—【非线性回归】

每日格言&#xff1a;赞美那已经失去的&#xff0c;好让回忆变得可爱 前言 本篇我们将会从一般非线性回归求解和多项式回归求解两个方面来具体介绍如何进行建模求解 一、一般非线性回归求解 1、配曲线求解 适用条件&#xff1a;六类基本曲线&#xff1a;倒指数函数曲线&#…

解决docker一直出现“=> ERROR [internal] load metadata for docker.io/library/xxx“的问题

思考了一下&#xff0c;应该是权限的问题&#xff0c;尝试使用密码登录docker&#xff0c;发现还是不行&#xff0c;因为我是在windows搭建了docker hub&#xff0c;所以可能是需要登录才可以下载&#xff0c;其实就是去生成一个令牌&#xff0c;然后登录即可。 登录即可&#…

单调栈《数组模拟》

#include <iostream>using namespace std;const int N 100010;int m; int stk[N], tt;int main() {cin >> m;while (m -- ){string op;int x;cin >> op;if (op "push"){cin >> x;stk[ tt] x;//插入x}else if (op "pop") tt -…

Tmagic-editor低代码底层拖拽库Moveable示例学习

在前面咱们的自研低代码海报制作平台学习分享计划中分享了自己开发的基本拖拽组件&#xff0c;也只是做了最简单的基本实现。真要写产品&#xff0c;更多还是依赖相关的开源优秀库。 文章目录 参考基本拖拽基本缩放基本Scalable基本旋转基于原点的拖拽和旋转关于练习源码 参考 …

谐振功率放大器的基本原理

1LC谐振电路 谐振又称“共振”。振荡系统在周期性外力作用下&#xff0c;当外力作用频率与系统固有振荡频率相同或很接近时&#xff0c;振幅急剧增大的现象。产生谐振时的频率称“谐振频率”。 电工技术中&#xff0c;振荡电路的共振现象&#xff1a; 1&#xff09;电感与电…

刀客doc:这一届奥运营销,伊利和蒙牛谁更滑头?

文 | 刀客Doc 伊利和蒙牛谁赢了&#xff1f; 聊一聊奥运营销&#xff0c;交个朋友加V&#xff1a;efangfeng 今年巴黎奥运营销&#xff0c;我看大家讨论比较多的就是蒙牛和伊利的暗战。 其中有一种声音认为&#xff0c;伊利这次又再一次成功伏击蒙牛。这个观点确实满足了不少…

SAR靶机笔记

SAR 靶机笔记 概述 SAR 是 Vulnhub 上的靶机&#xff0c;大家可以去 vulnhub 网站上去进行下载。 这里有链接&#xff1a; https://download.vulnhub.com/sar/sar.zip 一丶常规的 nmap 扫描 1&#xff09;主机发现 sn 只做 ping 扫描&#xff0c;不做端口扫描 nmap -sn …

回顾加密风险投资15年演变:步履维艰,但总体向上

1. 引言&#xff1a;加密风险投资的历程 过去15年&#xff0c;加密领域经历了从默默无闻到引爆全球金融市场的巨大变迁。风投机构&#xff08;VC&#xff09;在这一过程中扮演了重要角色&#xff0c;推动了区块链和加密货币行业的快速发展。本文将探讨加密风险投资的动态演变&…

转录组8种免疫浸润分析方法整理

探索疾病的免疫微环境是当下研究的热点&#xff0c;因此这也要求我们对免疫浸润分析的各种工具要有所了解&#xff0c;这些工具包括: CIBERSORT&#xff0c;quanTIseq&#xff0c;EPIC (这三种方法可得到不同细胞亚群的百分比结果/绝对丰度), xCell&#xff0c;TIMER&#xff0…

接口基础知识10:详解接口文档

课程大纲 一、接口文档简介 描述系统接口信息的文档&#xff0c;通常由‌后端开发人员编写&#xff0c;用于规定接口的规范&#xff0c;详细说明接口的逻辑和作用、如何调用接口。 接口文档包含的内容&#xff1a; 接口的逻辑和作用&#xff1a;简要描述接口的功能和用途。 …

JavaFX对话框控件-Dialog

JavaFX对话框控件-Dialog 常用属性titleinitOwnerdialogPaneresultConverter 实现方式 与Alert大部分功能类似可以自定义弹出框内容&#xff0c;比较灵活与DialogPane布局配合使用&#xff0c;自定义具体内容 参考DialogPane 常用属性 title 弹出框标题&#xff0c;标题太长…

2024 年了,IT 运维监控系统都有哪些推荐?

大浪淘沙&#xff0c;2024 年的今天&#xff0c;市面上很多监控系统慢慢淡出了大家的视野&#xff0c;而一些新的监控系统也逐渐崭露头角。今天我们就来看看 2024 年的当下&#xff0c;哪些 IT 运维监控系统最值得关注。 Prometheus 毫无疑问&#xff0c;Prometheus 是最值得关…

MySQL InnoDB supremum pseudo-record范围说明

引言 在 MySQL InnoDB 存储引擎中&#xff0c;锁机制是保证数据一致性和事务隔离的重要手段之一。InnoDB 引入了多种锁机制&#xff0c;其中 next-key lock 是实现行锁和间隙锁的关键部分。在 next-key lock 的机制中&#xff0c;supremum pseudo-record 是一个特殊的存在&…