首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】《Python网络爬虫从入门到精通》041-Matplotlib 图表的常用设置

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

原创
作者头像
愚公搬代码
发布2025-09-21 17:29:45
发布2025-09-21 17:29:45
19900
代码可运行
举报
运行总次数:0
代码可运行
震撼头图
震撼头图

💎 行业认证·权威头衔

  • 华为云天团核心成员 :特约编辑/云享专家/开发者专家/产品云测专家
  • 开发者社区全满贯 :CSDN双料专家/阿里云签约作者/腾讯云内容共创官
  • 技术生态共建先锋 :横跨鸿蒙/云计算/AI等前沿领域的技术布道者

🏆 荣誉殿堂

  • 🎖 连续三年蝉联 "华为云十佳博主" (2022-2024)
  • 🎖 双冠加冕 CSDN"年度博客之星TOP2" (2022&2023)
  • 🎖 十余个技术社区 年度杰出贡献奖 得主

📚 知识宝库

编程语言:.NET/Java/Python/Go/Node...

移动生态:HarmonyOS/iOS/Android/小程序

前沿领域:物联网/网络安全/大数据/AI/元宇宙

游戏开发:Unity3D引擎深度解析

🚀前言

在数据可视化的过程中,图表的美观与易读性直接影响到数据传达的效果。Matplotlib作为Python中最流行的绘图库之一,提供了丰富的功能和灵活的设置选项,使得我们能够创建出专业且具有视觉冲击力的图表。然而,初学者常常会在图表设置上感到困惑,不知道如何调整图表的样式、颜色、标签及其他参数,以达到最佳的可视化效果。

在本篇文章《Matplotlib 图表的常用设置》中,我们将系统地介绍Matplotlib中常用的图表设置技巧。我们将涵盖图表的基本构建块,包括标题、坐标轴、图例、刻度以及颜色等方面的设置。通过具体的实例和代码示例,你将学会如何调整图表的各个细节,使其不仅能够有效传达信息,还能吸引观众的注意力。

🚀一、Matplotlib 图表的常用设置

🔎1.基本绘图函数 plot()

语法

代码语言:python
代码运行次数:0
运行
复制
matplotlib.pyplot.plot(x, y, format_string, **kwargs)

参数说明

参数

说明

x

x轴数据(列表/数组)

y

y轴数据(列表/数组)

format_string

控制曲线格式的字符串(颜色+线条+标记,如 'ro--'

**kwargs

键值参数(如 linewidth=2, markersize=10

示例

代码语言:python
代码运行次数:0
运行
复制
import matplotlib.pyplot as plt
#折线图
#range()函数创建整数列表
x=range(1,15,1)
y=range(1,42,3)
plt.plot(x,y)
plt.show()
代码语言:python
代码运行次数:0
运行
复制
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调色板)

颜色循环设置

代码语言:python
代码运行次数:0
运行
复制
from cycler import cycler
colors = ['#1f77b4', '#ff7f0e', '#2ca02c']
plt.rcParams['axes.prop_cycle'] = cycler(color=colors)

🦋1.2 线条样式 linestyle

代码

样式

示例

'-''solid'

实线(默认)

undefined

'--''dashed'

虚线

undefined

':''dotted'

点线

undefined

'-.''dashdot'

点划线

undefined

🦋1.3 标记样式 marker

代码

样式

说明

'o'

圆圈

实心圆标记

's'

正方形

实心正方形

'^'

上三角形

倒三角标记

'D'

菱形

大菱形标记

'*'

星号

五角星标记

'h'

六边形

竖六边形标记

标记修饰参数

  • markerfacecolor (mfc): 标记填充色(如 mfc='w' 白色填充)
  • markeredgecolor (mec): 标记边缘颜色
  • markersize (ms): 标记大小

🦋1.4 综合应用示例

绘制体温折线图

代码语言:python
代码运行次数:0
运行
复制
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="->"))

调整边距

代码语言:python
代码运行次数:0
运行
复制
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() 函数用于创建或激活画布,语法如下:

代码语言:python
代码运行次数:0
运行
复制
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 英寸)

代码语言:python
代码运行次数:0
运行
复制
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轴标题

示例代码

代码语言:python
代码运行次数:0
运行
复制
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的连续刻度

代码语言:python
代码运行次数:0
运行
复制
plt.xticks(range(1, 15, 1))  # 刻度位置:1到14,步长1

(2) 自定义x轴标签(带“日”的日期)

代码语言:python
代码运行次数:0
运行
复制
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)

代码语言:python
代码运行次数:0
运行
复制
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])

完整代码:

代码语言:python
代码运行次数:0
运行
复制
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轴范围

示例代码

代码语言:python
代码运行次数:0
运行
复制
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轴)

示例代码

代码语言:python
代码运行次数:0
运行
复制
plt.grid(
    color='0.7',        # 浅灰色(0~1的灰度值)
    linestyle='--',     # 虚线
    linewidth=0.8,      # 线宽
    alpha=0.5           # 透明度(0~1)
)

🦋3.5 注意事项与常见问题

(1) 中文乱码问题

代码语言:python
代码运行次数:0
运行
复制
# 设置中文字体(需系统支持)
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 综合示例

代码语言:python
代码运行次数:0
运行
复制
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() 函数语法与参数

语法

代码语言:python
代码运行次数:0
运行
复制
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 示例代码与解析

为体温折线图添加数据标签

代码语言:python
代码运行次数:0
运行
复制
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 扩展应用:标注特殊点

标记最高体温点

代码语言:python
代码运行次数:0
运行
复制
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 图表标题设置

函数语法

代码语言:python
代码运行次数:0
运行
复制
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'

示例代码

代码语言:python
代码运行次数:0
运行
复制
plt.title(
    '14天基础体温折线图',  # 标题内容
    fontsize=18,          # 字体大小(注意:应为整数,非字符串)
    loc='left',           # 标题左对齐
    color='navy',         # 字体颜色
    pad=15                # 标题与图表的间距
)

🦋5.2 图例设置

函数语法

代码语言:python
代码运行次数:0
运行
复制
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'

自动选择最佳位置

undefined

'upper right'

右上方

undefined

'center left'

左侧中间

undefined

'lower center'

下方中间

undefined

(3) 微调位置 bbox_to_anchor

通过元组 (num1, num2) 调整图例位置:

  • num1:左右偏移(值越大越右)
  • num2:上下偏移(值越大越上)

示例:

代码语言:python
代码运行次数:0
运行
复制
plt.legend(
    ['体温'],
    loc='upper right',
    bbox_to_anchor=(1.2, 1),  # 向右上方微调
    fontsize=10
)

🦋5.3 综合示例与代码

完整标题与图例设置

代码语言:python
代码运行次数:0
运行
复制
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() 函数语法与核心参数

语法

代码语言:python
代码运行次数:0
运行
复制
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'

极坐标系(需配合极坐标图使用)

雷达图或极坐标图的注释

示例

代码语言:python
代码运行次数:0
运行
复制
# 在数据点 (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

示例

代码语言:python
代码运行次数:0
运行
复制
arrowprops = dict(
    arrowstyle='->',        # 简单箭头样式
    facecolor='red',       # 箭头颜色
    shrink=0.05,           # 箭头两端收缩5%
    linewidth=1.5,         # 箭头线宽
    edgecolor='black'      # 箭头边缘颜色
)

🦋6.4 完整示例与代码解析

标注最高体温点

代码语言:python
代码运行次数:0
运行
复制
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) 多注释场景

代码语言:python
代码运行次数:0
运行
复制
# 标注最低体温点
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 自定义箭头:

代码语言:python
代码运行次数:0
运行
复制
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'

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 💎 行业认证·权威头衔
  • 🏆 荣誉殿堂
  • 📚 知识宝库
  • 🚀前言
  • 🚀一、Matplotlib 图表的常用设置
    • 🔎1.基本绘图函数 plot()
      • 🦋1.1 颜色设置
      • 🦋1.2 线条样式 linestyle
      • 🦋1.3 标记样式 marker
      • 🦋1.4 综合应用示例
      • 🦋1.5 其他常用设置
      • 🦋1.7 注意事项
    • 🔎2.设置画布
      • 🦋2.1 figure() 函数语法与参数
      • 🦋2.2 参数说明
      • 🦋2.3 示例代码
      • 🦋2.4 注意事项
    • 🔎3.设置坐标轴
      • 🦋3.1 轴标题设置
      • 🦋3.3 坐标轴刻度设置
      • 🦋3.3 坐标轴范围设置
      • 🦋3.4 网格线设置
      • 🦋3.5 注意事项与常见问题
      • 🦋3.6 综合示例
    • 🔎4.添加文本标签
      • 🦋4.1 text() 函数语法与参数
      • 🦋4.2 示例代码与解析
      • 🦋4.3 关键参数说明
      • 🦋4.4 注意事项
      • 🦋4.5 扩展应用:标注特殊点
    • 🔎5.设置标题和图例
      • 🦋5.1 图表标题设置
      • 🦋5.2 图例设置
      • 🦋5.3 综合示例与代码
      • 🦋5.4 注意事项
    • 🔎6.添加注释
      • 🦋6.1 annotate() 函数语法与核心参数
      • 🦋6.2 坐标系统详解(xycoords)
      • 🦋6.3 箭头样式设置(arrowprops)
      • 🦋6.4 完整示例与代码解析
      • 🦋6.5 扩展应用与注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档