【愚公系列】《Python网络爬虫从入门到精通》041-Matplotlib 图表的常用设置
标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
🚀前言
在数据可视化的过程中,图表的美观与易读性直接影响到数据传达的效果。Matplotlib作为Python中最流行的绘图库之一,提供了丰富的功能和灵活的设置选项,使得我们能够创建出专业且具有视觉冲击力的图表。然而,初学者常常会在图表设置上感到困惑,不知道如何调整图表的样式、颜色、标签及其他参数,以达到最佳的可视化效果。
在本篇文章《Matplotlib 图表的常用设置》中,我们将系统地介绍Matplotlib中常用的图表设置技巧。我们将涵盖图表的基本构建块,包括标题、坐标轴、图例、刻度以及颜色等方面的设置。通过具体的实例和代码示例,你将学会如何调整图表的各个细节,使其不仅能够有效传达信息,还能吸引观众的注意力。
🚀一、Matplotlib 图表的常用设置
🔎1.基本绘图函数 plot()
语法
matplotlib.pyplot.plot(x, y, format_string, **kwargs)
参数说明
参数 | 说明 |
---|---|
x |
x轴数据(列表/数组) |
y |
y轴数据(列表/数组) |
format_string |
控制曲线格式的字符串(颜色+线条+标记,如 'ro--' ) |
**kwargs |
键值参数(如 linewidth=2 , markersize=10 ) |
示例
import matplotlib.pyplot as plt
#折线图
#range()函数创建整数列表
x=range(1,15,1)
y=range(1,42,3)
plt.plot(x,y)
plt.show()

import pandas as pd
import matplotlib.pyplot as plt
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x =df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y)
plt.show()

🦋1.1 颜色设置
颜色参数 color
支持多种颜色表示方式:
代码 | 颜色 | 其他方式示例 |
---|---|---|
'b' |
蓝色 | '#0000FF' |
'g' |
绿色 | (0, 1, 0) (RGB元组) |
'r' |
红色 | 'cyan' (颜色名称) |
'c' |
蓝绿色 | 0.5 (灰度值) |
'm' |
洋红色 | 'xkcd:sky blue' (Xkcd颜色) |
'y' |
黄色 | 'tab:blue' (Tableau调色板) |
颜色循环设置
from cycler import cycler
colors = ['#1f77b4', '#ff7f0e', '#2ca02c']
plt.rcParams['axes.prop_cycle'] = cycler(color=colors)
🦋1.2 线条样式 linestyle
代码 | 样式 | 示例 |
---|---|---|
'-' 或 'solid' |
实线(默认) | ![实线] |
'--' 或 'dashed' |
虚线 | ![虚线] |
':' 或 'dotted' |
点线 | ![点线] |
'-.' 或 'dashdot' |
点划线 | ![点划线] |
🦋1.3 标记样式 marker
代码 | 样式 | 说明 |
---|---|---|
'o' |
圆圈 | 实心圆标记 |
's' |
正方形 | 实心正方形 |
'^' |
上三角形 | 倒三角标记 |
'D' |
菱形 | 大菱形标记 |
'*' |
星号 | 五角星标记 |
'h' |
六边形 | 竖六边形标记 |
标记修饰参数
-
markerfacecolor
(mfc): 标记填充色(如mfc='w'
白色填充) -
markeredgecolor
(mec): 标记边缘颜色 -
markersize
(ms): 标记大小
🦋1.4 综合应用示例
绘制体温折线图
import pandas as pd
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(5,3),facecolor='yellow')
#导入Excel文件
df=pd.read_excel('体温.xls')
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.show()

🦋1.5 其他常用设置
坐标轴与标题
-
plt.xlabel("x轴标签")
:设置x轴标签 -
plt.ylabel("y轴标签")
:设置y轴标签 -
plt.title("图表标题")
:设置标题
图例与注释
-
plt.legend(["图例说明"])
:添加图例 -
plt.text(x, y, "注释文本")
:在指定坐标添加文本 -
plt.annotate("注释", xy=(x,y), xytext=(x1,y1), arrowprops=dict(arrowstyle="->"))
调整边距
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)
# 或自动调整
plt.tight_layout()
🦋1.7 注意事项
-
文件路径:确保Excel文件路径正确(如 体温.xls
在代码同级目录)。 -
颜色值纠错:十六进制颜色 #FFFF00
(黄色)而非#FFFFOO
。 -
扩展功能:可结合Seaborn库美化图表,或使用 plt.style
选择预置主题(如plt.style.use('ggplot')
)。
🔎2.设置画布
🦋2.1 figure()
函数语法与参数
figure()
函数用于创建或激活画布,语法如下:
matplotlib.pyplot.figure(
num=None, # 画布编号或名称
figsize=None, # 画布尺寸
dpi=None, # 分辨率
facecolor=None, # 背景颜色
edgecolor=None, # 边框颜色
frameon=True # 是否显示边框
)
🦋2.2 参数说明
参数 | 类型 | 说明 | 默认值 | 示例 |
---|---|---|---|---|
num |
int 或 str |
画布标识符(编号或名称)。若 num 已存在,则激活该画布;否则新建画布。 |
None |
num=1 或 num='my_plot' |
figsize |
tuple |
画布尺寸 (宽度, 高度) ,单位为英寸。 |
None (默认 (6.4, 4.8) ) |
figsize=(8, 5) |
dpi |
int |
分辨率(每英寸像素数),值越大图像越清晰。 | None (默认 100 ) |
dpi=300 |
facecolor |
str 或颜色代码 |
背景颜色(支持名称、十六进制、RGB元组等)。 | None (默认白色) |
facecolor='#FFE4C4' |
edgecolor |
str 或颜色代码 |
边框颜色。 | None (默认黑色) |
edgecolor='blue' |
frameon |
bool |
是否显示边框。 | True |
frameon=False |
🦋2.3 示例代码
自定义黄色画布(尺寸 5x3 英寸)
import pandas as pd
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(5,3),facecolor='yellow')
#导入Excel文件
df=pd.read_excel('体温.xls')
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.show()

🦋2.4 注意事项
-
文件路径问题:
-
确保 Excel 文件 体温.xls
存在于代码同级目录,或使用绝对路径(如r'C:\data\体温.xls'
)。 -
若文件读取失败,检查 pandas
是否安装:pip install pandas openpyxl
(需openpyxl
支持.xls
)。
-
-
颜色设置:
-
facecolor
和edgecolor
支持多种格式:颜色名称('red'
)、十六进制('#FF0000'
)、RGB 元组((1,0,0)
)。
-
-
画布与子图的关系:
-
使用 plt.figure()
创建独立画布后,默认在当前画布上绘制图形。 -
若需多子图布局,可结合 plt.subplots()
使用。
-
-
分辨率与显示:
-
高 dpi
值(如dpi=300
)适合保存高清图像,但可能增加内存消耗。 -
某些 IDE 或 Jupyter Notebook 中, plt.show()
可能不会按figsize
精确显示,建议导出为图片查看实际尺寸。
-
-
边框控制:
-
frameon=False
会隐藏画布边框,但坐标轴仍保留。
-
-
画布复用:
-
通过 num
参数可激活已存在的画布:plt.figure(num='my_plot') # 激活名为 'my_plot' 的画布
-
🔎3.设置坐标轴
🦋3.1 轴标题设置
函数说明
-
** xlabel()
**:设置x轴标题 -
** ylabel()
**:设置y轴标题
示例代码
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
plt.show()

🦋3.3 坐标轴刻度设置
函数说明
-
** xticks(locs, [labels], **kwargs)
**:设置x轴刻度-
locs
:刻度位置(数组) -
labels
:刻度标签(数组,与locs
长度一致)
-
-
** yticks(locs, [labels], **kwargs)
**:设置y轴刻度(参数同上)
示例代码 (1) 设置x轴为1~14的连续刻度
plt.xticks(range(1, 15, 1)) # 刻度位置:1到14,步长1
(2) 自定义x轴标签(带“日”的日期)
dates = ['1日', '2日', '3日', '4日', '5日', '6日', '7日',
'8日', '9日', '10日', '11日', '12日', '13日', '14日']
plt.xticks(range(1, 15, 1), dates) # 刻度位置与标签一一对应
(3) 设置y轴体温刻度(35.4~38,间隔0.2)
plt.yticks([35.4, 35.6, 35.8, 36, 36.2, 36.4, 36.6,
36.8, 37, 37.2, 37.4, 37.6, 37.8, 38])
完整代码:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
plt.xticks(range(1,15,1))
# dates=['1日','2日','3日','4日','5日',
# '6日','7日','8日','9日','10日',
# '11日','12日','13日','14日']
# plt.xticks(range(1,15,1),dates)
plt.show()
🦋3.3 坐标轴范围设置
函数说明
-
** xlim(left, right)
**:设置x轴范围 -
** ylim(bottom, top)
**:设置y轴范围
示例代码
plt.xlim(1, 14) # x轴范围:1~14
plt.ylim(35, 38) # y轴范围:35~38(更合理的体温区间)
🦋3.4 网格线设置
函数说明
-
** grid(**kwargs)
**:显示网格线-
color
:网格线颜色(支持颜色名称、十六进制等) -
linestyle
:线型(如'-'
,'--'
,':'
) -
linewidth
:线宽(数值) -
axis
:方向('x'
仅x轴,'y'
仅y轴)
-
示例代码
plt.grid(
color='0.7', # 浅灰色(0~1的灰度值)
linestyle='--', # 虚线
linewidth=0.8, # 线宽
alpha=0.5 # 透明度(0~1)
)
🦋3.5 注意事项与常见问题
(1) 中文乱码问题
# 设置中文字体(需系统支持)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体
# 或使用其他字体(如微软雅黑)
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 解决负号显示
plt.rcParams['axes.unicode_minus'] = False
(2) 文件路径与依赖
-
确保Excel文件路径正确(绝对路径或相对路径) -
安装必要依赖: pip install pandas openpyxl
(3) 刻度优化技巧
-
自动刻度调整:使用 plt.Locator
类自动生成合理刻度from matplotlib.ticker import MultipleLocator plt.gca().xaxis.set_major_locator(MultipleLocator(2)) # x轴每隔2单位显示刻度
(4) 饼图网格线特殊处理
-
饼图默认不显示网格线,需设置 frame=True
:plt.pie(sizes, labels=labels, autopct='%1.1f%%', frame=True) plt.grid(True) # 显示网格线
🦋3.6 综合示例
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
dates=['1日','2日','3日','4日','5日',
'6日','7日','8日','9日','10日',
'11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.xlim(1,14)
plt.ylim(35,45)
plt.show()

🔎4.添加文本标签
🦋4.1 text()
函数语法与参数
语法
matplotlib.pyplot.text(
x, y, # 标签坐标
s, # 文本内容
fontdict=None, # 字体属性字典
withdash=False, # 是否使用虚线文本(已弃用)
**kwargs # 其他文本样式参数
)
参数说明
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
x , y |
float |
文本的坐标位置(基于数据范围) | x=5 , y=36.5 |
s |
str |
显示的文本内容 | s='36.5℃' |
fontdict |
dict |
自定义字体属性(覆盖默认值) | {'size': 12, 'color': 'red'} |
**kwargs |
- |
其他文本样式参数(如字体大小、对齐方式) | fontsize=10 , ha='center' |
🦋4.2 示例代码与解析
为体温折线图添加数据标签
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
#设置x轴刻度及标签
dates=['1日','2日','3日','4日','5日',
'6日','7日','8日','9日','10日',
'11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.yticks([35.4,35.6,35.8,36,36.2,36.4,36.6,36.8,
37,37.2,37.4,37.6,37.8,38])
for a,b in zip(x,y):
plt.text(a,b+0.05,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
plt.show()

🦋4.3 关键参数说明
(1) 对齐方式
-
horizontalalignment
(ha
):水平对齐,可选值:'left'
,'center'
,'right'
。 -
verticalalignment
(va
):垂直对齐,可选值:'top'
,'center'
,'bottom'
,'baseline'
。
(2) 常用样式参数
参数 | 说明 | 示例 |
---|---|---|
fontsize |
字体大小 | fontsize=12 |
color |
文本颜色 | color='#FF4500' |
rotation |
旋转角度 | rotation=45 |
bbox |
文本背景框 | bbox={'boxstyle': 'round', 'facecolor': 'white', 'alpha': 0.7} |
(3) 动态调整位置
-
偏移值:通过 b + 0.05
将标签上移,避免与数据点重叠。 -
格式化文本: f'{b:.1f}'
或'%.1f' % b
保留1位小数。
🦋4.4 注意事项
-
文件路径与依赖:
-
确保 Excel 文件存在且路径正确。 -
安装依赖库: pip install pandas openpyxl
。
-
-
中文显示问题:
-
若 SimHei
不可用,替换为其他中文字体(如'Microsoft YaHei'
)。 -
在 Linux 系统中可能需要额外安装中文字体包。
-
-
标签重叠处理:
-
若数据点密集导致标签重叠,可调整偏移量或使用 rotation
旋转标签。 -
高级场景可使用 adjustText
库自动调整标签位置:from adjustText import adjust_text texts = [plt.text(a, b, f'{b:.1f}') for a, b in zip(x, y)] adjust_text(texts) # 自动调整标签位置
-
-
性能优化:
-
数据量较大时,避免为每个点添加标签,可选择性标注关键点。
-
🦋4.5 扩展应用:标注特殊点
标记最高体温点
max_temp = y.max()
max_idx = y.idxmax()
plt.text(
x[max_idx], max_temp + 0.1,
f'最高体温: {max_temp:.1f}℃',
ha='center',
va='bottom',
color='red',
fontweight='bold'
)
🔎5.设置标题和图例
🦋5.1 图表标题设置
函数语法
matplotlib.pyplot.title(
label, # 标题文本
fontdict=None, # 字体样式字典
loc='center', # 标题水平位置
pad=None, # 标题与图表顶部的间距
**kwargs # 其他文本样式参数
)
参数说明
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
label |
str |
标题文本内容 | label='14天基础体温折线图' |
fontdict |
dict |
字体属性字典(覆盖默认样式) | {'fontsize': 18, 'color': 'red'} |
loc |
str |
标题水平位置('center' /'left' /'right' ) |
loc='left' |
pad |
float |
标题与图表顶部的间距(单位:像素) | pad=20 |
**kwargs |
- |
其他文本样式(如 fontsize 、color ) |
fontsize=16 , color='#333333' |
示例代码
plt.title(
'14天基础体温折线图', # 标题内容
fontsize=18, # 字体大小(注意:应为整数,非字符串)
loc='left', # 标题左对齐
color='navy', # 字体颜色
pad=15 # 标题与图表的间距
)
🦋5.2 图例设置
函数语法
matplotlib.pyplot.legend(
labels=None, # 图例标签列表
loc='best', # 图例位置(见表14.3)
bbox_to_anchor=None, # 图例微调坐标(元组)
fontsize=10, # 字体大小
**kwargs # 其他样式参数
)
参数说明 (1) 基本用法
方式 | 代码示例 | 说明 |
---|---|---|
自动显示图例 | plt.legend() |
自动根据绘图时的 label 参数生成图例 |
手动指定图例 | plt.legend(['体温']) |
手动传入标签列表(需与绘图顺序一致) |
(2) 图例位置参数 loc
位置代码 | 描述 | 示例效果 |
---|---|---|
'best' |
自动选择最佳位置 | ![best] |
'upper right' |
右上方 | ![upper_right] |
'center left' |
左侧中间 | ![center_left] |
'lower center' |
下方中间 | ![lower_center] |
(3) 微调位置 bbox_to_anchor
通过元组 (num1, num2)
调整图例位置:
-
num1
:左右偏移(值越大越右) -
num2
:上下偏移(值越大越上)
示例:
plt.legend(
['体温'],
loc='upper right',
bbox_to_anchor=(1.2, 1), # 向右上方微调
fontsize=10
)
🦋5.3 综合示例与代码
完整标题与图例设置
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
#设置x轴刻度及标签
dates=['1日','2日','3日','4日','5日',
'6日','7日','8日','9日','10日',
'11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.yticks([35.4,35.6,35.8,36,36.2,36.4,36.6,36.8,
37,37.2,37.4,37.6,37.8,38])
for a,b in zip(x,y):
plt.text(a,b+0.05,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
plt.title('14天基础体温曲线图',fontsize='18')
plt.legend(('体温',),loc='upper right',fontsize=10)
plt.show()

🦋5.4 注意事项
-
字体大小参数类型:
-
fontsize
应为整数(如fontsize=18
),而非字符串(避免fontsize='18'
)。
-
-
手动图例标签的陷阱:
-
手动指定图例时需确保标签顺序与绘图顺序一致,推荐在绘图时直接使用 label
参数:plt.plot(x, y, label='体温变化') plt.legend() # 自动读取label
-
-
图例位置微调:
-
当图例被画布边缘截断时,使用 bbox_to_anchor
调整位置,或扩大画布边距:plt.subplots_adjust(right=0.8) # 右侧留出20%空白
-
-
多线条图例处理:
-
若图表中有多条线,需为每条线指定 label
:plt.plot(x1, y1, label='数据1') plt.plot(x2, y2, label='数据2') plt.legend()
-
🔎6.添加注释
🦋6.1 annotate()
函数语法与核心参数
语法
plt.annotate(
text, # 注释文本内容
xy, # 被注释点的坐标(数据坐标系)
xytext=None, # 注释文本的坐标(默认与xy相同)
xycoords='data', # 被注释点的坐标系统
arrowprops=None, # 箭头样式字典
**kwargs # 其他文本样式参数(如字体、颜色)
)
🦋6.2 坐标系统详解(xycoords
)
常用坐标系设置
参数值 | 说明 | 示例场景 |
---|---|---|
'data' |
默认值,基于数据坐标 | 注释数据点(如最高体温点) |
'axes fraction' |
基于子图区域的百分比(左下角为(0,0),右上角为(1,1)) | 在图表左上角添加注释 |
'figure points' |
基于整个画布的像素点(左下角为(0,0)) | 精确控制注释在画布中的位置 |
'polar' |
极坐标系(需配合极坐标图使用) | 雷达图或极坐标图的注释 |
示例
# 在数据点 (9, 37.1) 处添加注释,文本位于数据点右侧
plt.annotate('最高体温', xy=(9, 37.1), xycoords='data', xytext=(10.5, 37.1))
🦋6.3 箭头样式设置(arrowprops
)
常用参数
参数 | 类型 | 说明 | 示例 |
---|---|---|---|
arrowstyle |
str |
箭头样式(如 '->' , 'fancy' ) |
arrowstyle='->' |
facecolor |
str |
箭头颜色 | facecolor='red' |
shrink |
float |
箭头两端收缩比例(0~1) | shrink=0.1 (收缩10%) |
width |
float |
箭头杆宽度(单位:点) | width=1 |
headwidth |
float |
箭头头部宽度(点) | headwidth=10 |
headlength |
float |
箭头头部长度(点) | headlength=15 |
示例
arrowprops = dict(
arrowstyle='->', # 简单箭头样式
facecolor='red', # 箭头颜色
shrink=0.05, # 箭头两端收缩5%
linewidth=1.5, # 箭头线宽
edgecolor='black' # 箭头边缘颜色
)
🦋6.4 完整示例与代码解析
标注最高体温点
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
df=pd.read_excel('体温.xls') #导入Excel文件
#折线图
x=df['日期'] #x轴数据
y=df['体温'] #y轴数据
plt.plot(x,y,color='m',linestyle='-',marker='o',mfc='w')
plt.xlabel('2020年2月') #x轴标题
plt.ylabel('基础体温') #y轴标题
#设置x轴刻度及标签
dates=['1日','2日','3日','4日','5日',
'6日','7日','8日','9日','10日',
'11日','12日','13日','14日']
plt.xticks(range(1,15,1),dates)
plt.yticks([35.4,35.6,35.8,36,36.2,36.4,36.6,36.8,
37,37.2,37.4,37.6,37.8,38])
for a,b in zip(x,y):
plt.text(a,b+0.05,'%.1f'%b,ha = 'center',va = 'bottom',fontsize=9)
plt.title('14天基础体温曲线图',fontsize='18')
plt.legend(('体温',),loc='upper right',fontsize=10)
plt.annotate('最高体温', xy=(9,37.1), xytext=(10.5,37.1),
xycoords='data',
arrowprops=dict(facecolor='r', shrink=0.05))
plt.show()

🦋6.5 扩展应用与注意事项
(1) 多注释场景
# 标注最低体温点
min_temp = y.min()
min_idx = y.idxmin()
plt.annotate(
'最低体温',
xy=(x[min_idx], min_temp),
xytext=(x[min_idx] - 2, min_temp - 0.2),
arrowprops=dict(arrowstyle='wedge', color='blue')
)
(2) 高级箭头样式 使用 FancyArrowPatch
自定义箭头:
from matplotlib.patches import FancyArrowPatch
plt.annotate(
'异常值',
xy=(5, 36.8),
xytext=(3, 37.5),
arrowprops=dict(
arrowstyle='fancy',
connectionstyle='arc3,rad=0.3', # 弧形箭头
color='orange',
mutation_scale=20 # 控制箭头大小
)
)
(3) 注意事项
-
坐标系一致性:确保 xy
和xytext
使用相同坐标系(默认为'data'
)。 -
文本遮挡处理:若注释文本重叠,调整 xytext
或使用textcoords
参数指定文本坐标系:plt.annotate( '注释', xy=(0.5, 0.5), xycoords='axes fraction', # 被注释点在子图中心 xytext=(0.7, 0.7), # 文本在子图的(70%,70%)位置 textcoords='axes fraction' # 文本使用子图百分比坐标系 )
-
极坐标注释:若使用极坐标系( projection='polar'
),需设置xycoords='polar'
。
- 点赞
- 收藏
- 关注作者
评论(0)