活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

轻松掌握Matplotlib标签和标题设置让你的数据图表更专业更美观

SunJu_FaceMall

3万

主题

2720

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-26 12:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

在数据可视化领域,Matplotlib是Python中最流行、最基础的绘图库之一。无论是在学术研究、数据分析报告,还是商业演示中,清晰、专业的图表都能有效传达信息。而图表的标签和标题作为图表的重要组成部分,能够帮助观众快速理解图表所展示的数据内容和含义。本文将详细介绍如何使用Matplotlib设置和美化图表的标签和标题,让你的数据图表更加专业和美观。

Matplotlib基础

Matplotlib是Python的一个2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出版质量级别的图形。在开始学习标签和标题设置之前,让我们先了解Matplotlib的基础知识。

首先,确保你已经安装了Matplotlib库。如果尚未安装,可以通过以下命令安装:
  1. pip install matplotlib
复制代码

下面是一个简单的Matplotlib图表创建示例:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 显示图表
  10. plt.show()
复制代码

这段代码会创建一个简单的正弦波图表,但没有任何标签和标题,接下来我们将学习如何添加这些元素。

设置图表标题

图表标题是图表的重要组成部分,它能够简洁明了地概括图表的主要内容。在Matplotlib中,可以使用title()函数来设置图表标题。

基本标题设置
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置标题
  10. plt.title("正弦波函数")
  11. # 显示图表
  12. plt.show()
复制代码

标题位置调整

默认情况下,标题位于图表的顶部中央。你可以通过loc参数来调整标题的位置:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置标题位置:'left', 'center', 'right'
  10. plt.title("正弦波函数", loc='right')
  11. # 显示图表
  12. plt.show()
复制代码

标题样式设置

你可以通过参数来调整标题的字体、大小、颜色等样式:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置标题样式
  10. plt.title("正弦波函数",
  11.           fontsize=16,      # 字体大小
  12.           fontweight='bold', # 字体粗细
  13.           color='blue',     # 字体颜色
  14.           pad=20)           # 标题与图表的间距
  15. # 显示图表
  16. plt.show()
复制代码

多行标题

如果标题较长,可以使用换行符\n创建多行标题:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置多行标题
  10. plt.title("正弦波函数\ny = sin(x)",
  11.           fontsize=16,
  12.           ha='center')      # 水平对齐方式
  13. # 显示图表
  14. plt.show()
复制代码

使用面向对象的方式设置标题

除了使用plt.title()函数,你还可以使用面向对象的方式设置标题:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表和子图
  7. fig, ax = plt.subplots(figsize=(8, 6))
  8. ax.plot(x, y)
  9. # 使用面向对象的方式设置标题
  10. ax.set_title("正弦波函数", fontsize=16, pad=20)
  11. # 显示图表
  12. plt.show()
复制代码

设置坐标轴标签

坐标轴标签用于说明X轴和Y轴所代表的数据含义,是图表中不可或缺的元素。

基本坐标轴标签设置

使用xlabel()和ylabel()函数可以分别设置X轴和Y轴的标签:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置坐标轴标签
  10. plt.xlabel("X轴")
  11. plt.ylabel("Y轴")
  12. # 显示图表
  13. plt.show()
复制代码

坐标轴标签样式设置

与标题类似,你可以通过参数来调整坐标轴标签的样式:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置坐标轴标签及其样式
  10. plt.xlabel("X轴 (弧度)",
  11.            fontsize=12,
  12.            color='red',
  13.            labelpad=10)    # 标签与轴线的距离
  14. plt.ylabel("Y轴 (sin值)",
  15.            fontsize=12,
  16.            color='blue',
  17.            labelpad=10)
  18. # 显示图表
  19. plt.show()
复制代码

坐标轴标签位置调整

你可以通过调整标签的位置来优化图表的布局:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置坐标轴标签及其位置
  10. plt.xlabel("X轴 (弧度)",
  11.            fontsize=12,
  12.            position=(0.5, -0.1),  # (x, y) 位置,相对于图表的比例
  13.            ha='center')            # 水平对齐方式
  14. plt.ylabel("Y轴 (sin值)",
  15.            fontsize=12,
  16.            position=(-0.1, 0.5),  # (x, y) 位置,相对于图表的比例
  17.            va='center',            # 垂直对齐方式
  18.            rotation='vertical')    # 旋转角度
  19. # 显示图表
  20. plt.show()
复制代码

使用面向对象的方式设置坐标轴标签

同样,你也可以使用面向对象的方式设置坐标轴标签:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表和子图
  7. fig, ax = plt.subplots(figsize=(8, 6))
  8. ax.plot(x, y)
  9. # 使用面向对象的方式设置坐标轴标签
  10. ax.set_xlabel("X轴 (弧度)", fontsize=12, labelpad=10)
  11. ax.set_ylabel("Y轴 (sin值)", fontsize=12, labelpad=10)
  12. # 显示图表
  13. plt.show()
复制代码

图例设置

图例用于标识图表中不同数据系列的含义,特别是在包含多条线的图表中尤为重要。

基本图例设置

要在图表中添加图例,首先需要在绘制数据时提供label参数,然后调用legend()函数:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表
  8. plt.figure(figsize=(8, 6))
  9. # 绘制数据并设置标签
  10. plt.plot(x, y1, label='sin(x)')
  11. plt.plot(x, y2, label='cos(x)')
  12. # 添加图例
  13. plt.legend()
  14. # 显示图表
  15. plt.show()
复制代码

图例位置调整

默认情况下,Matplotlib会自动选择最佳位置放置图例。你也可以通过loc参数手动指定图例位置:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表
  8. plt.figure(figsize=(8, 6))
  9. # 绘制数据并设置标签
  10. plt.plot(x, y1, label='sin(x)')
  11. plt.plot(x, y2, label='cos(x)')
  12. # 添加图例并设置位置
  13. # 可选位置:'upper right', 'upper left', 'lower left', 'lower right',
  14. # 'right', 'center left', 'center right', 'lower center', 'upper center', 'center'
  15. plt.legend(loc='upper right')
  16. # 显示图表
  17. plt.show()
复制代码

图例样式设置

你可以通过参数来调整图例的样式,如边框、背景、字体等:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表
  8. plt.figure(figsize=(8, 6))
  9. # 绘制数据并设置标签
  10. plt.plot(x, y1, label='sin(x)')
  11. plt.plot(x, y2, label='cos(x)')
  12. # 添加图例并设置样式
  13. plt.legend(
  14.     fontsize=12,             # 字体大小
  15.     frameon=True,           # 是否显示边框
  16.     framealpha=0.8,         # 边框透明度
  17.     facecolor='white',       # 背景颜色
  18.     edgecolor='black',      # 边框颜色
  19.     title='函数',           # 图例标题
  20.     title_fontsize=14       # 图例标题字体大小
  21. )
  22. # 显示图表
  23. plt.show()
复制代码

图例列数调整

当图例项较多时,你可以调整图例的列数以优化布局:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. y3 = np.tan(x)
  8. y4 = x**2
  9. # 创建图表
  10. plt.figure(figsize=(8, 6))
  11. # 绘制数据并设置标签
  12. plt.plot(x, y1, label='sin(x)')
  13. plt.plot(x, y2, label='cos(x)')
  14. plt.plot(x, y3, label='tan(x)')
  15. plt.plot(x, y4, label='x^2')
  16. # 添加图例并设置列数
  17. plt.legend(ncol=2)  # 2列
  18. # 显示图表
  19. plt.show()
复制代码

使用面向对象的方式设置图例

同样,你也可以使用面向对象的方式设置图例:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表和子图
  8. fig, ax = plt.subplots(figsize=(8, 6))
  9. # 绘制数据并设置标签
  10. ax.plot(x, y1, label='sin(x)')
  11. ax.plot(x, y2, label='cos(x)')
  12. # 使用面向对象的方式添加图例
  13. ax.legend(fontsize=12, loc='upper right')
  14. # 显示图表
  15. plt.show()
复制代码

刻度标签设置

刻度标签用于标识坐标轴上的刻度值,合理的刻度标签设置可以让图表更加易读。

基本刻度标签设置

Matplotlib会自动设置刻度标签,你也可以手动设置:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置X轴刻度标签
  10. plt.xticks([0, 2, 4, 6, 8, 10],
  11.            ['0', '2π', '4π', '6π', '8π', '10π'])
  12. # 显示图表
  13. plt.show()
复制代码

刻度标签样式设置

你可以调整刻度标签的字体、大小、颜色等样式:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置X轴刻度标签及其样式
  10. plt.xticks([0, 2, 4, 6, 8, 10],
  11.            ['0', '2π', '4π', '6π', '8π', '10π'],
  12.            fontsize=12,
  13.            color='red',
  14.            rotation=45)  # 旋转角度
  15. # 设置Y轴刻度标签样式
  16. plt.yticks(fontsize=12, color='blue')
  17. # 显示图表
  18. plt.show()
复制代码

刻度标签格式化

对于数值较大的刻度标签,你可以使用格式化字符串来简化显示:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10000, 100)
  5. y = x**2
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 设置Y轴刻度标签格式
  10. from matplotlib.ticker import FuncFormatter
  11. def millions_formatter(x, pos):
  12.     return f'{x/1e6:.1f}M'
  13. plt.gca().yaxis.set_major_formatter(FuncFormatter(millions_formatter))
  14. # 显示图表
  15. plt.show()
复制代码

使用面向对象的方式设置刻度标签

同样,你也可以使用面向对象的方式设置刻度标签:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表和子图
  7. fig, ax = plt.subplots(figsize=(8, 6))
  8. ax.plot(x, y)
  9. # 使用面向对象的方式设置刻度标签
  10. ax.set_xticks([0, 2, 4, 6, 8, 10])
  11. ax.set_xticklabels(['0', '2π', '4π', '6π', '8π', '10π'],
  12.                    fontsize=12,
  13.                    color='red',
  14.                    rotation=45)
  15. # 显示图表
  16. plt.show()
复制代码

文本注释

除了标题、坐标轴标签和图例外,你还可以在图表中添加文本注释来强调或解释特定的数据点。

基本文本注释

使用text()函数可以在图表的指定位置添加文本注释:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加文本注释
  10. plt.text(5, 0.5, '这是一个文本注释',
  11.          fontsize=12,
  12.          color='red')
  13. # 显示图表
  14. plt.show()
复制代码

指向特定数据点的注释

使用annotate()函数可以创建指向特定数据点的注释:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加指向特定数据点的注释
  10. plt.annotate('最大值',
  11.              xy=(np.pi/2, 1),      # 箭头指向的点
  12.              xytext=(3, 0.5),      # 文本位置
  13.              arrowprops=dict(facecolor='black', shrink=0.05),  # 箭头属性
  14.              fontsize=12,
  15.              color='red')
  16. # 显示图表
  17. plt.show()
复制代码

带边框的文本注释

你可以为文本注释添加边框和背景色,使其更加突出:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加带边框的文本注释
  10. plt.text(5, 0.5, '这是一个带边框的文本注释',
  11.          fontsize=12,
  12.          color='red',
  13.          bbox=dict(facecolor='yellow',  # 背景色
  14.                    edgecolor='red',     # 边框色
  15.                    alpha=0.7,           # 透明度
  16.                    boxstyle='round'))   # 边框样式
  17. # 显示图表
  18. plt.show()
复制代码

使用面向对象的方式添加文本注释

同样,你也可以使用面向对象的方式添加文本注释:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表和子图
  7. fig, ax = plt.subplots(figsize=(8, 6))
  8. ax.plot(x, y)
  9. # 使用面向对象的方式添加文本注释
  10. ax.text(5, 0.5, '这是一个文本注释',
  11.         fontsize=12,
  12.         color='red')
  13. # 使用面向对象的方式添加指向特定数据点的注释
  14. ax.annotate('最大值',
  15.            xy=(np.pi/2, 1),      # 箭头指向的点
  16.            xytext=(3, 0.5),      # 文本位置
  17.            arrowprops=dict(facecolor='black', shrink=0.05),  # 箭头属性
  18.            fontsize=12,
  19.            color='red')
  20. # 显示图表
  21. plt.show()
复制代码

字体和样式设置

统一的字体和样式设置可以让你的图表看起来更加专业和美观。

全局字体设置

你可以通过修改Matplotlib的配置参数来设置全局字体:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 设置全局字体
  4. plt.rcParams['font.family'] = 'SimHei'  # 设置中文字体,如黑体
  5. plt.rcParams['font.size'] = 12          # 设置全局字体大小
  6. # 准备数据
  7. x = np.linspace(0, 10, 100)
  8. y = np.sin(x)
  9. # 创建图表
  10. plt.figure(figsize=(8, 6))
  11. plt.plot(x, y)
  12. # 添加标题和标签
  13. plt.title("正弦波函数")
  14. plt.xlabel("X轴")
  15. plt.ylabel("Y轴")
  16. # 显示图表
  17. plt.show()
复制代码

局部字体设置

除了全局设置,你还可以为特定的文本元素设置字体:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加标题和标签,并设置字体
  10. plt.title("正弦波函数",
  11.           fontfamily='SimHei',  # 字体
  12.           fontsize=16,          # 字体大小
  13.           fontweight='bold')    # 字体粗细
  14. plt.xlabel("X轴",
  15.            fontfamily='SimHei',
  16.            fontsize=12)
  17. plt.ylabel("Y轴",
  18.            fontfamily='SimHei',
  19.            fontsize=12)
  20. # 显示图表
  21. plt.show()
复制代码

颜色设置

颜色是图表设计中的重要元素,合理的颜色设置可以让图表更加美观和易读:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表
  8. plt.figure(figsize=(8, 6))
  9. # 绘制数据并设置颜色
  10. plt.plot(x, y1, color='#1f77b4', label='sin(x)')  # 使用十六进制颜色码
  11. plt.plot(x, y2, color='orange', label='cos(x)')  # 使用颜色名称
  12. # 添加标题和标签,并设置颜色
  13. plt.title("正弦和余弦函数", color='#333333')  # 深灰色
  14. plt.xlabel("X轴", color='#666666')           # 中灰色
  15. plt.ylabel("Y轴", color='#666666')
  16. # 设置图例
  17. plt.legend()
  18. # 显示图表
  19. plt.show()
复制代码

网格线设置

网格线可以帮助读者更准确地读取数据值:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加网格线
  10. plt.grid(True,                # 显示网格线
  11.          linestyle='--',      # 线型
  12.          linewidth=0.5,       # 线宽
  13.          color='gray',        # 颜色
  14.          alpha=0.5)           # 透明度
  15. # 添加标题和标签
  16. plt.title("正弦波函数")
  17. plt.xlabel("X轴")
  18. plt.ylabel("Y轴")
  19. # 显示图表
  20. plt.show()
复制代码

高级技巧

在掌握了基本的标签和标题设置后,让我们来学习一些高级技巧,让你的图表更加专业和美观。

使用LaTeX格式的数学表达式

Matplotlib支持使用LaTeX格式的数学表达式,这对于科学和工程图表特别有用:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y = np.sin(x)
  6. # 创建图表
  7. plt.figure(figsize=(8, 6))
  8. plt.plot(x, y)
  9. # 添加使用LaTeX格式的标题和标签
  10. plt.title(r"$y = \sin(x)$", fontsize=16)  # 使用r前缀表示原始字符串
  11. plt.xlabel(r"$x$ (弧度)", fontsize=12)
  12. plt.ylabel(r"$y$", fontsize=12)
  13. # 显示图表
  14. plt.show()
复制代码

多子图标签设置

当图表包含多个子图时,你可以为每个子图设置独立的标签和标题:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建包含2个子图的图表
  8. fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 8))
  9. # 在第一个子图中绘制数据并设置标签
  10. ax1.plot(x, y1, color='blue')
  11. ax1.set_title("正弦函数", fontsize=14)
  12. ax1.set_xlabel("X轴", fontsize=12)
  13. ax1.set_ylabel("Y轴", fontsize=12)
  14. ax1.grid(True, linestyle='--', alpha=0.6)
  15. # 在第二个子图中绘制数据并设置标签
  16. ax2.plot(x, y2, color='red')
  17. ax2.set_title("余弦函数", fontsize=14)
  18. ax2.set_xlabel("X轴", fontsize=12)
  19. ax2.set_ylabel("Y轴", fontsize=12)
  20. ax2.grid(True, linestyle='--', alpha=0.6)
  21. # 调整子图间距
  22. plt.tight_layout()
  23. # 显示图表
  24. plt.show()
复制代码

共享坐标轴标签

对于多子图,你可以共享坐标轴标签以减少重复:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建包含2个子图的图表,并共享X轴
  8. fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 8), sharex=True)
  9. # 在第一个子图中绘制数据并设置标签
  10. ax1.plot(x, y1, color='blue')
  11. ax1.set_title("正弦函数", fontsize=14)
  12. ax1.set_ylabel("Y轴", fontsize=12)
  13. ax1.grid(True, linestyle='--', alpha=0.6)
  14. # 在第二个子图中绘制数据并设置标签
  15. ax2.plot(x, y2, color='red')
  16. ax2.set_title("余弦函数", fontsize=14)
  17. ax2.set_xlabel("X轴", fontsize=12)
  18. ax2.set_ylabel("Y轴", fontsize=12)
  19. ax2.grid(True, linestyle='--', alpha=0.6)
  20. # 调整子图间距
  21. plt.tight_layout()
  22. # 显示图表
  23. plt.show()
复制代码

添加图表总标题

对于多子图,你可以添加一个总标题:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建包含2个子图的图表
  8. fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(8, 8))
  9. # 在第一个子图中绘制数据并设置标签
  10. ax1.plot(x, y1, color='blue')
  11. ax1.set_title("正弦函数", fontsize=14)
  12. ax1.set_ylabel("Y轴", fontsize=12)
  13. ax1.grid(True, linestyle='--', alpha=0.6)
  14. # 在第二个子图中绘制数据并设置标签
  15. ax2.plot(x, y2, color='red')
  16. ax2.set_title("余弦函数", fontsize=14)
  17. ax2.set_xlabel("X轴", fontsize=12)
  18. ax2.set_ylabel("Y轴", fontsize=12)
  19. ax2.grid(True, linestyle='--', alpha=0.6)
  20. # 添加总标题
  21. fig.suptitle("三角函数", fontsize=16, y=1.02)  # y参数控制标题位置
  22. # 调整子图间距
  23. plt.tight_layout()
  24. # 显示图表
  25. plt.show()
复制代码

自定义图例位置和样式

有时候,你可能需要更精细地控制图例的位置和样式:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. # 准备数据
  4. x = np.linspace(0, 10, 100)
  5. y1 = np.sin(x)
  6. y2 = np.cos(x)
  7. # 创建图表
  8. plt.figure(figsize=(8, 6))
  9. # 绘制数据并设置标签
  10. plt.plot(x, y1, label='sin(x)')
  11. plt.plot(x, y2, label='cos(x)')
  12. # 添加图例并自定义位置和样式
  13. plt.legend(
  14.     loc='upper center',      # 位置
  15.     bbox_to_anchor=(0.5, 1.15),  # 锚点位置
  16.     ncol=2,                 # 列数
  17.     frameon=False,          # 不显示边框
  18.     fontsize=12             # 字体大小
  19. )
  20. # 添加标题和标签
  21. plt.title("三角函数", pad=30)  # 增加标题与图表的间距
  22. plt.xlabel("X轴")
  23. plt.ylabel("Y轴")
  24. # 显示图表
  25. plt.show()
复制代码

实战案例

让我们通过一个综合案例来展示如何应用前面所学的标签和标题设置技巧:
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. from matplotlib.ticker import FuncFormatter
  4. # 设置全局字体
  5. plt.rcParams['font.family'] = 'SimHei'  # 设置中文字体
  6. plt.rcParams['font.size'] = 12          # 设置全局字体大小
  7. # 准备数据
  8. x = np.linspace(0, 10, 100)
  9. y1 = np.sin(x)
  10. y2 = np.cos(x)
  11. y3 = np.sin(x) * np.cos(x)
  12. # 创建包含2个子图的图表
  13. fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10), sharex=True)
  14. # 在第一个子图中绘制数据
  15. ax1.plot(x, y1, color='#1f77b4', linewidth=2, label=r'$\sin(x)$')
  16. ax1.plot(x, y2, color='#ff7f0e', linewidth=2, label=r'$\cos(x)$')
  17. # 设置第一个子图的标题和标签
  18. ax1.set_title("三角函数比较", fontsize=16, pad=20)
  19. ax1.set_ylabel("函数值", fontsize=14)
  20. ax1.grid(True, linestyle='--', alpha=0.6)
  21. # 添加第一个子图的图例
  22. ax1.legend(
  23.     loc='upper right',
  24.     frameon=True,
  25.     framealpha=0.8,
  26.     fontsize=12
  27. )
  28. # 在第二个子图中绘制数据
  29. ax2.plot(x, y3, color='#2ca02c', linewidth=2, label=r'$\sin(x) \cdot \cos(x)$')
  30. # 添加第二个子图的注释
  31. max_idx = np.argmax(y3)
  32. ax2.annotate(
  33.     '最大值',
  34.     xy=(x[max_idx], y3[max_idx]),
  35.     xytext=(x[max_idx]+1, y3[max_idx]-0.1),
  36.     arrowprops=dict(facecolor='black', shrink=0.05, width=1, headwidth=8),
  37.     fontsize=12,
  38.     bbox=dict(boxstyle='round,pad=0.5', fc='yellow', alpha=0.5)
  39. )
  40. # 设置第二个子图的标题和标签
  41. ax2.set_title("正弦与余弦的乘积", fontsize=16, pad=20)
  42. ax2.set_xlabel("X轴 (弧度)", fontsize=14)
  43. ax2.set_ylabel("函数值", fontsize=14)
  44. ax2.grid(True, linestyle='--', alpha=0.6)
  45. # 添加第二个子图的图例
  46. ax2.legend(
  47.     loc='upper right',
  48.     frameon=True,
  49.     framealpha=0.8,
  50.     fontsize=12
  51. )
  52. # 设置X轴刻度标签
  53. ax2.set_xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi, 5*np.pi/2, 3*np.pi])
  54. ax2.set_xticklabels(['0', r'$\frac{\pi}{2}$', r'$\pi$', r'$\frac{3\pi}{2}$',
  55.                      r'$2\pi$', r'$\frac{5\pi}{2}$', r'$3\pi$'],
  56.                     fontsize=12)
  57. # 添加总标题
  58. fig.suptitle("三角函数分析", fontsize=20, y=1.02)
  59. # 调整子图间距
  60. plt.tight_layout()
  61. # 保存图表
  62. plt.savefig('trigonometric_functions.png', dpi=300, bbox_inches='tight')
  63. # 显示图表
  64. plt.show()
复制代码

这个综合案例展示了如何:

1. 设置全局字体
2. 创建多子图并共享X轴
3. 使用LaTeX格式的数学表达式
4. 自定义线条颜色和宽度
5. 添加标题和标签,并设置字体大小和间距
6. 添加网格线
7. 自定义图例位置和样式
8. 添加指向特定数据点的注释
9. 自定义刻度标签
10. 添加总标题
11. 调整子图间距
12. 保存图表为高分辨率图片

总结

本文详细介绍了如何使用Matplotlib设置和美化图表的标签和标题,包括:

1. 图表标题的设置和样式调整
2. 坐标轴标签的设置和位置调整
3. 图例的添加和样式自定义
4. 刻度标签的设置和格式化
5. 文本注释的添加和样式设置
6. 字体和样式的全局和局部设置
7. 高级技巧,如使用LaTeX格式、多子图设置等
8. 通过综合案例展示了各种技巧的应用

通过合理地设置和美化图表的标签和标题,你可以让你的数据图表更加专业和美观,更有效地传达数据信息。希望本文能帮助你掌握Matplotlib标签和标题设置的技巧,提升你的数据可视化能力。

如果你想进一步学习Matplotlib,建议查阅官方文档和示例,以及探索更多高级功能,如3D图表、交互式图表等。不断实践和尝试,你会发现Matplotlib的强大之处,并能够创建出更加精美和专业的数据可视化作品。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则