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()
相关推荐
m0_626535202 小时前
qwen2.5vl学习
学习
AOwhisky2 小时前
Linux(CentOS)系统管理入门笔记:第二期核心知识点自测与详解
linux·笔记·centos
铅笔侠_小龙虾2 小时前
Rust 学习(8)-切片类型
学习·rust·c#
自信不摆烂美女2 小时前
从0开始学习3个月进入网络安全行业
学习
AOwhisky11 小时前
Python 学习笔记(第一期与第二期)——基础语法——核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发
STLearner12 小时前
ICML 2026 | LLM×Graph论文总结[1]【图基础模型,文本属性图,多模态属性图,图对齐,图提示学习,关系深度学习
论文阅读·人工智能·python·深度学习·学习·机器学习·数据挖掘
泰晶科技12 小时前
【前装供应链实操笔记:车规晶振背后AEC-Q100与Q200的绑定关系】
笔记
神明不懂浪漫13 小时前
【第四章】CSS(二)——文本外观属性与复合选择器
前端·css·经验分享·笔记
什巳13 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode