Matplotlib学习笔记

Matplotlib导包

py 复制代码
import matplotlib.pyplot as plt

Matplotlib全局设置

py 复制代码
# 设置字体
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 设置负号
plt.rcParams["axes.unicode_minus"] = False

Matplotlib快速使用例子

py 复制代码
# 1.创建画布
plt.figure()

# 2.绘制图像(x轴,y轴)
plt.plot([1,2,3],[3,2,1])

# 3.显示图像
plt.show()

显示结果:

自定义X与Y刻度

X 轴刻度:plt.xticks()

Y 轴刻度:plt.yticks()

参数 含义:

ticks 数字刻度位置,必须是数值列表,决定刻度画在哪些坐标点

labels 对应位置显示的文字标签,长度必须和 ticks 一致

rotation 标签旋转角度,x 轴常用rotation=45防重叠

fontsize 刻度文字字号

color 刻度文字颜色

ha 水平对齐:left/center/right

va 垂直对齐

minor 是否设置次刻度

例子:

py 复制代码
x = [1,2,3]
y = [2,2,3]

plt.xticks([1,2,3])
plt.yticks([1,2,3],['一','二','三'])

plt.plot(x,y)

plt.show()

图形风格(标记、线条、颜色)

fmt 极简格式串

格式:markerlinecolor 顺序可打乱

标记 marker

符号 含义
. 小点
o 实心圆
s 正方形
^ 上三角
v 下三角
< > 左右三角
* 星号
D 菱形
+ x 十字、叉号

线型 line

符号 线型
- 实线(默认)
-- 虚线
-. 点划线
: 点状线
无线条,只画标记点

颜色 color

简写 颜色
b
g 绿
r
c
m 品红
y
k
w

网格

参数:

py 复制代码
plt.grid(
    b=None,        # 是否显示网格 True/False
    which='major', # 作用于主刻度/次刻度/全部
    axis='both',   # 对x轴、y轴、两者生效
    linestyle='-', # 线型
    linewidth=0.8, # 线宽
    color='gray',  # 颜色
    alpha=0.3,     # 透明度 0~1
    **kwargs
)

添加描述信息

标题标签

常用参数:

fontsize:字号

fontweight:字重 bold 加粗

color:文字颜色

pad:标题距离图表上方间距

py 复制代码
plt.title()

X与Y轴标签

py 复制代码
plt.xlabel()
plt.ylabel()

图片保存

py 复制代码
plt.savefig(
    fname="pic.png",       # 文件名,后缀决定格式:png/jpg/svg/pdf
    dpi=300,               # 分辨率,数值越大越清晰
    bbox_inches="tight",   # 自动裁掉四周多余白边(必加)
    facecolor="white",     # 画布背景色,透明填 "none"
    edgecolor="none",
    pad_inches=0.1         # 裁剪后预留少量边距
)

要在plt.show()之前保存图片,它会释放资源,之后保存就是空图片

设置显示图例

plt.legend函数

py 复制代码
plt.legend(
    handles=None,          # 自定义需要显示图例的绘图对象列表,可只展示部分线条/图形
    labels=None,           # 手动指定图例文字列表,会覆盖绘图时label参数设置的内容
    loc='best',            # 图例在绘图区内的预设位置,支持字符串/数字编码,默认自动选遮挡最少区域
    bbox_to_anchor=None,   # 以(横坐标,纵坐标)指定图例锚点位置,常配合loc把图例放到图表外侧
    ncol=1,                # 图例分列数量,默认1列竖排;设为多列可横向平铺多个图例项
    fontsize=None,         # 图例正文文字字号大小
    frameon=True,          # 是否给图例添加外边框,True显示边框,False隐藏边框
    facecolor=None,        # 图例背景填充颜色,不指定则使用默认画布背景色
    edgecolor=None,        # 图例边框线条颜色
    title=None,            # 给图例整体添加标题文字
    title_fontsize=None,   # 图例标题单独设置字号,区别于图例条目文字
    shadow=False           # 是否给图例框添加阴影效果,True开启阴影,默认关闭
)

参数:loc

字符串参数 数字编码 中文位置说明
'best' 0 自动最优位置(默认)
'upper right' 1 右上角
'upper left' 2 左上角
'lower left' 3 左下角
'lower right' 4 右下角
'right' 5 右侧居中
'center left' 6 左侧垂直居中
'center right' 7 右侧垂直居中
'lower center' 8 底部水平居中
'upper center' 9 顶部水平居中
'center' 10 整张图表正中心

绘制多个图像例子

py 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 设置字体
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 设置负号
plt.rcParams["axes.unicode_minus"] = False


# 以元组的形式返回结果(画布对象,坐标轴对象) 创建了2行一列的画布
fig,axes = plt.subplots(nrows=2,ncols=1,figsize=(10,5),dpi=100)

# pad 增大子图间距,默认pad=1
plt.tight_layout(pad=3)

# 生成武汉和随州的温度数据
x = range(30)
wuhan = [np.random.uniform(15,25) for i in x]
suizhou = [np.random.uniform(10,19) for i in x]

#索引上边图像设置数据
axes[0].plot(x,wuhan)
#索引下边图像
axes[1].plot(x,suizhou)

# 设置上边图像的y坐标轴(15到25,步长为3)
axes[0].set_yticks(range(15,25)[::3])
# 设置上边图像的x坐标轴
axes[0].set_xticks(x[::5])

# 设置标题和标签
axes[0].set_title('武汉')
axes[0].set_ylabel('气温')
axes[0].set_xlabel('日期',loc='left') # 放在左边

axes[1].set_title('随州')

# 显示图像
# plt.show()

结果:

Matplotlib官方案例图

  1. 英文原版(稳定最新)
    https://matplotlib.org/stable/gallery/index.html
  2. 中文翻译版(国内访问友好)
    https://matplotlib.net.cn/stable/gallery/index.html

常见图形

折线图

以折线的上升或下降来表示统计数量的增减变化的统计图

py 复制代码
# 折线图

# 设置画布
plt.figure(figsize=(10,5),dpi=100)

# 数据
data = [5,10,6,8,3]

# 绘制折线图
plt.plot(data,color='b')

# 显示
plt.show()

柱状图

排列在工作表的行或列中的数据可以绘制到柱状图中

py 复制代码
# 柱状图
categories = ['A','B','C','D']
values = [1,2,3,4]

plt.bar(categories, values,color='r')

plt.title('柱状图')
plt.xlabel('种类')
plt.ylabel('数量')

plt.show()

直方图

由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般横轴表示数据范围,纵轴表示分布情况

py 复制代码
# 直方图
#设置画布
plt.figure(figsize=(10,5),dpi=100)

#数据
data = np.random.random(100)

#直方图
plt.hist(data,bins=30,color='r')

#显示
plt.show()

饼图

用于表示不同分类的占比情况,通过弧度大小来对比各种分类

py 复制代码
# 饼图

# 设置画布
plt.figure(figsize=(10,5),dpi=100)

#数据
sizes = [25,35,25,15]
labels = ['category_A','category_B','category_C','category_D']

# 绘制饼图,显示百分比
plt.pie(sizes,labels=labels,autopct='%1.1f%%')

# 显示图表
plt.show()

散点图

用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式

py 复制代码
# 散点图
x = [1,2,3,4,5]
y = [2,3,5,7,9]

# 设置画布
plt.figure(figsize=(10,5),dpi=100)

# 绘制散点图
plt.scatter(x,y,color='r')

# 显示
plt.show()
相关推荐
库玛西32 分钟前
C++ 运行时多态 :核心总结与原理图解
c语言·c++·笔记
魔力女仆2 小时前
语言开发笔记3
笔记
x17388062732 小时前
文件包含漏洞介绍
笔记
qq_185198692 小时前
SpingBoot3入门学习一
学习
噗噗夹的TA之旅2 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
码农小韩3 小时前
AIAgent应用开发——大模型理论基础与应用(七)
python·学习·ai·大模型·agent
流云鹤4 小时前
05Java学习day(5)
java·学习
only-lucky4 小时前
QML深入学习五(Controls模块)
前端·javascript·学习
Yolanda_20225 小时前
Python学习-第九部分-错误处理与异常处理
开发语言·python·学习
一只小菜鸡..5 小时前
南京大学 操作系统 (JYY) 学习笔记:CPU 的局限、GPU 与 AI 时代的算力革命
人工智能·笔记·学习