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()
相关推荐
Xuanzang Road26 分钟前
第 40 届学习强企玄奘路戈壁挑战赛:在绝境中重塑自我
学习
tju新生代魔迷1 小时前
Python学习日记3
学习
hsjiasb3 小时前
FreeRTOS学习(三十九)——最终总结
学习·学习笔记·freertos
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(47):Nemori——用“预测误差”判断什么经验值得被记住
论文阅读·人工智能·学习·开源·github
约克34 小时前
2024年空调除甲醛技术参数与性能评测解析
学习
kkkkkkkkkk_Z4 小时前
学嵌入式和C语言编程数据结构|学习日记Day21:内核链表与队列学习
c语言·数据结构·学习
GGMM7895 小时前
VX4B600100 控制板全解析:施耐德 ATV630 变频器核心控制单元详解
笔记·变频器·变频器维修
kdxiaojie6 小时前
Linux USB驱动阅读笔记(1)
linux·笔记·学习·usb
呼噜想睡觉6 小时前
Bootstrap3完成从导航到页脚完整页面开发
学习
半生过往7 小时前
前端学 Java 课程笔记
java·前端·笔记