【愚公系列】《Python网络爬虫从入门到精通》041-Matplotlib 图表的常用设置

举报
愚公搬代码 发表于 2025/05/16 21:29:27 2025/05/16
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 详情
作者简介 愚公搬代码
头衔 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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 注意事项

  1. 文件路径:确保Excel文件路径正确(如 体温.xls 在代码同级目录)。
  2. 颜色值纠错:十六进制颜色 #FFFF00(黄色)而非 #FFFFOO
  3. 扩展功能:可结合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 intstr 画布标识符(编号或名称)。若 num 已存在,则激活该画布;否则新建画布。 None num=1num='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 注意事项

  1. 文件路径问题

    • 确保 Excel 文件 体温.xls 存在于代码同级目录,或使用绝对路径(如 r'C:\data\体温.xls')。
    • 若文件读取失败,检查 pandas 是否安装:pip install pandas openpyxl(需 openpyxl 支持 .xls)。
  2. 颜色设置

    • facecoloredgecolor 支持多种格式:颜色名称('red')、十六进制('#FF0000')、RGB 元组((1,0,0))。
  3. 画布与子图的关系

    • 使用 plt.figure() 创建独立画布后,默认在当前画布上绘制图形。
    • 若需多子图布局,可结合 plt.subplots() 使用。
  4. 分辨率与显示

    • dpi 值(如 dpi=300)适合保存高清图像,但可能增加内存消耗。
    • 某些 IDE 或 Jupyter Notebook 中,plt.show() 可能不会按 figsize 精确显示,建议导出为图片查看实际尺寸。
  5. 边框控制

    • frameon=False 会隐藏画布边框,但坐标轴仍保留。
  6. 画布复用

    • 通过 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) 对齐方式

  • horizontalalignmentha:水平对齐,可选值:'left', 'center', 'right'
  • verticalalignmentva:垂直对齐,可选值:'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 注意事项

  1. 文件路径与依赖

    • 确保 Excel 文件存在且路径正确。
    • 安装依赖库:pip install pandas openpyxl
  2. 中文显示问题

    • SimHei 不可用,替换为其他中文字体(如 'Microsoft YaHei')。
    • 在 Linux 系统中可能需要额外安装中文字体包。
  3. 标签重叠处理

    • 若数据点密集导致标签重叠,可调整偏移量或使用 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. 性能优化

    • 数据量较大时,避免为每个点添加标签,可选择性标注关键点。

🦋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 - 其他文本样式(如 fontsizecolor 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 注意事项

  1. 字体大小参数类型

    • fontsize 应为整数(如 fontsize=18),而非字符串(避免 fontsize='18')。
  2. 手动图例标签的陷阱

    • 手动指定图例时需确保标签顺序与绘图顺序一致,推荐在绘图时直接使用 label 参数:
      plt.plot(x, y, label='体温变化')
      plt.legend()  # 自动读取label
      
  3. 图例位置微调

    • 当图例被画布边缘截断时,使用 bbox_to_anchor 调整位置,或扩大画布边距:
      plt.subplots_adjust(right=0.8)  # 右侧留出20%空白
      
  4. 多线条图例处理

    • 若图表中有多条线,需为每条线指定 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) 注意事项

  • 坐标系一致性:确保 xyxytext 使用相同坐标系(默认为 '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'
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。