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官方案例图
- 英文原版(稳定最新)
https://matplotlib.org/stable/gallery/index.html - 中文翻译版(国内访问友好)
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()
