【Python篇】matplotlib超详细教程-由入门到精通(下篇)1

简介: 【Python篇】matplotlib超详细教程-由入门到精通(下篇)

前言

建议把代码复制到pycharm等IDE上面看实际效果,方便理解嗷❤️

第六部分:保存与导出图表

在实际的应用场景中,我们不仅需要在程序中展示图表,有时候还需要将这些图表保存为文件,以便在其他地方使用,比如插入文档、报告或网页中。matplotlib 提供了非常方便的保存图表功能。

6.1 保存为图片文件

matplotlib 可以将生成的图表保存为多种格式的图片文件,比如 PNG、JPG、SVG 等。我们可以通过 savefig() 函数来完成这个操作。

示例:保存图表为 PNG 文件

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加标题
plt.title('保存为 PNG 文件的示例')

# 保存图表为 PNG 文件
plt.savefig('my_plot.png')

# 显示图表
plt.show()

解释:

  • plt.savefig('my_plot.png'):将当前的图表保存为名为 my_plot.png 的图片文件。默认保存为 PNG 格式。

关键点:

  • savefig() 的参数是文件名,可以指定文件格式。如果没有明确指定格式,它会根据文件名的后缀来确定格式。例如,my_plot.jpg 会保存为 JPG 文件。
  • savefig() 可以在 plt.show() 之前或之后调用,但推荐在 plt.show() 之前保存,这样不会受后续图表显示的影响。

6.2 保存为高分辨率图片

有时候我们需要保存高分辨率的图片,比如用于打印或发布。可以通过 dpi 参数设置分辨率。

示例:保存为高分辨率图片

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加标题
plt.title('保存为高分辨率 PNG 文件的示例')

# 保存图表为高分辨率的 PNG 文件,dpi 参数设置分辨率
plt.savefig('high_res_plot.png', dpi=300)

# 显示图表
plt.show()

解释:

  • dpi=300:设置图像分辨率为 300 DPI(每英寸像素数),这在出版或打印中通常是常用的高分辨率标准。

6.3 保存为不同文件格式

matplotlib 支持多种文件格式,常见的格式有:

  • PNG:位图格式,常用于网页和应用程序中。
  • JPG:另一种常用的位图格式,但通常会有压缩损失。
  • SVG:矢量图格式,适合在网页中显示,并且在缩放时不会失真。
  • PDF:矢量图格式,适合用于打印和高质量展示。

示例:保存为不同文件格式

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加标题
plt.title('保存为多种格式的示例')

# 保存为 PNG 文件
plt.savefig('plot.png')

# 保存为 JPG 文件
plt.savefig('plot.jpg')

# 保存为 SVG 文件
plt.savefig('plot.svg')

# 保存为 PDF 文件
plt.savefig('plot.pdf')

# 显示图表
plt.show()

解释:

  • 根据文件的后缀名自动保存为相应的格式。
  • 矢量图 (SVG, PDF) 在放大和缩小时不会失真,适合用于需要缩放的场景。

6.4 调整图表的保存尺寸

我们可以通过 figsize 参数来控制保存的图片大小,figsize 以英寸为单位。

示例:设置图片尺寸并保存

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表,并设置图像大小为 10x6 英寸
plt.figure(figsize=(10, 6))

# 绘制图表
plt.plot(x, y)

# 添加标题
plt.title('设置图片尺寸并保存')

# 保存图表为指定尺寸的 PNG 文件
plt.savefig('custom_size_plot.png')

# 显示图表
plt.show()

解释:

  • plt.figure(figsize=(10, 6)):设置图像的宽度为 10 英寸,高度为 6 英寸。这样可以控制保存图像的实际尺寸。

6.5 解决中文乱码问题

在绘制带有中文标题或标签的图表时,可能会遇到显示乱码的问题。这是由于 matplotlib 默认使用的字体不支持中文。我们可以通过设置字体来解决这个问题。

示例:解决中文显示乱码

import matplotlib.pyplot as plt

# 导入中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体

# 解决负号 '-' 显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 绘制图表,添加中文标题和标签
plt.plot(x, y)
plt.title('折线图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')

# 显示图表
plt.show()

解释:

  • plt.rcParams['font.sans-serif'] = ['SimHei']:设置默认字体为 SimHei(黑体),以支持中文字符显示。
  • plt.rcParams['axes.unicode_minus'] = False:避免负号显示为方块。

至此,我们已经完成了 matplotlib 的基本操作,并掌握了保存图表的方式。在今后的应用中,可以根据需求保存图表为各种格式,并控制图像的尺寸和分辨率。同时也学会了如何处理中文字符显示的问题。


接下来我们继续深入,学习 matplotlib 的更多高级功能,例如:

  • 绘制 3D 图形
  • 动态图表
  • 动画的创建

第七部分:高级图表定制

在实际的数据可视化中,我们可能不仅仅满足于绘制简单的图表。为了让图表更具表现力和可读性,matplotlib 提供了许多高级的定制功能。这部分内容会深入讲解如何控制图表中的各个元素,使其更贴合实际需求。

7.1 设置坐标轴的范围与刻度

有时候,matplotlib 会自动根据数据的范围来设置坐标轴的范围,但这并不总是理想的。在某些场景下,我们可能需要手动调整坐标轴的范围,以突出重点数据。我们可以使用 xlim()ylim() 方法来设置坐标轴的范围。

示例:手动设置坐标轴范围

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 手动设置 X 轴和 Y 轴的范围
plt.xlim(0, 6)  # 设置 X 轴范围为 0 到 6
plt.ylim(0, 30)  # 设置 Y 轴范围为 0 到 30

# 添加标题和坐标轴标签
plt.title('手动设置坐标轴范围的示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')

# 显示图表
plt.show()

解释:

  • plt.xlim(0, 6):设置 X 轴的显示范围为 0 到 6。
  • plt.ylim(0, 30):设置 Y 轴的显示范围为 0 到 30。

拓展:

  • 在一些动态数据可视化中,坐标轴范围的设置可以根据实际需要动态调整,从而使得数据更直观。

7.2 自定义坐标轴刻度

除了坐标轴的范围,有时候我们也需要更改刻度的显示,比如让刻度间隔更大或更小,或是使用特定的数字或文本作为刻度标记。

示例:自定义刻度

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 自定义 X 轴和 Y 轴的刻度
plt.xticks([0, 1, 2, 3, 4, 5, 6], ['零', '一', '二', '三', '四', '五', '六'])  # 自定义 X 轴刻度为中文
plt.yticks([0, 5, 10, 15, 20, 25, 30], ['0', '5', '10', '15', '20', '25', '30'])

# 添加标题和坐标轴标签
plt.title('自定义刻度的示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')

# 显示图表
plt.show()

解释:

  • plt.xticks():自定义 X 轴的刻度及显示内容,可以是数字、文本或其他符号。
  • plt.yticks():自定义 Y 轴的刻度及显示内容。

7.3 添加网格线

为了使数据更加清晰直观,特别是在查看大范围的数据时,网格线 (Grid) 是一个很有用的工具。matplotlib 允许我们为图表添加水平和垂直网格线,并可以定制网格线的样式。

示例:添加网格线

import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 添加网格线,并设置样式
plt.grid(True, linestyle='--', color='grey', alpha=0.7)

# 添加标题和坐标轴标签
plt.title('添加网格线的示例')
plt.xlabel('X 轴')
plt.ylabel('Y 轴')

# 显示图表
plt.show()

解释:

  • plt.grid(True):开启网格线,True 表示显示网格线。
  • linestyle:设置网格线的线型,例如虚线 '--'
  • color:设置网格线的颜色。
  • alpha:设置网格线的透明度,值为 0 到 1,越接近 1 越不透明。

拓展:

除了基本的添加网格线功能,matplotlib 允许我们对网格线进行更高级的自定义。例如,我们可以单独为 X 轴或 Y 轴添加网格线,改变网格线的密度、样式、颜色等。这些功能特别适用于精细化的图表设计,使数据更容易解读。

7.3.1 为特定轴添加网格线

我们不一定需要为所有的轴都添加网格线。有时,数据只需要在某个特定方向上进行参照。可以通过 axis 参数指定网格线仅应用于 X 轴或 Y 轴。

示例:仅为 Y 轴添加网格线
import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 仅为 Y 轴添加网格线
plt.grid(True, axis='y', linestyle='--', color='grey', alpha=0.7)

# 添加标题
plt.title('仅为 Y 轴添加网格线')

# 显示图表
plt.show()


解释:
  • axis='y':表示仅为 Y 轴添加网格线。如果想只为 X 轴添加网格线,可以将 axis 设置为 'x'
  • 这样可以避免图表中过多的视觉干扰,突出某个方向的数据信息。

7.3.2 设置网格线的间隔与密度

在某些场景下,默认的网格线密度可能过高或过低。我们可以通过设置主刻度 (major) 和次刻度 (minor) 来控制网格线的间隔与密度。

示例:为次刻度添加网格线
import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 设置主刻度和次刻度
plt.minorticks_on()  # 打开次刻度
plt.grid(which='major', linestyle='-', linewidth='0.5', color='black')  # 主刻度网格线
plt.grid(which='minor', linestyle=':', linewidth='0.5', color='grey')   # 次刻度网格线

# 添加标题
plt.title('为次刻度添加网格线')

# 显示图表
plt.show()
解释:
  • plt.minorticks_on():打开次刻度。
  • which='major':设置主刻度的网格线样式。
  • which='minor':设置次刻度的网格线样式。

7.3.3 自定义网格线的样式与线宽

matplotlib 允许我们通过不同的线型、线宽、颜色等选项,灵活地调整网格线的外观,使其与图表的整体风格保持一致。

示例:自定义网格线的线型与线宽
import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y)

# 自定义网格线的样式与线宽
plt.grid(True, linestyle='-.', linewidth=2, color='green')

# 添加标题
plt.title('自定义网格线样式与线宽')

# 显示图表
plt.show()
解释:
  • linestyle='-.'::使用点划线的样式作为网格线(类似于点划线)。
  • linewidth=2: 将网格线的宽度设置为 2,这比默认的线宽更粗,更容易看清。

拓展:
  • 在有多个数据系列的复杂图表中,不同的网格线样式有助于将重要数据与背景信息区分开。可以尝试不同的线型,如 '-', '--', ':' 等,调整视觉效果。
  • 同时,使用 alpha 参数可以设置网格线的透明度,以避免网格线过于突出影响数据阅读。

7.3.4 控制网格线的显示层次 (zorder)

matplotlib 中的每个图形元素都有一个 zorder,决定了它们在图表中的显示顺序。通过控制网格线的 zorder,我们可以确保它们出现在数据线条的上方或下方。

示例:调整网格线的 zorder
import matplotlib.pyplot as plt

# 定义数据
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

# 创建图表
plt.plot(x, y, zorder=2)  # 数据线条的 zorder 为 2

# 将网格线的 zorder 设置为 1,这样网格线会在数据线的下方
plt.grid(True, linestyle='--', color='grey', zorder=1)

# 添加标题
plt.title('调整网格线的显示层次')

# 显示图表
plt.show()
解释:
  • zorder=2: 设置数据线条的显示顺序为 2(较高的顺序)。
  • zorder=1: 设置网格线的显示顺序为 1,使其显示在数据线条的下方。


拓展:
  • 通过调节 zorder,我们可以让网格线与图表中的其他元素保持适当的层次关系。特别是在有多个数据系列和复杂背景的图表中,合理的 zorder 设置可以极大提升图表的可读性。

【Python篇】matplotlib超详细教程-由入门到精通(下篇)2;https://developer.aliyun.com/article/1617469

目录
相关文章
|
1天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
1天前
|
知识图谱 Python
Python入门:4.Python中的运算符
Python是一间强大而且便捷的编程语言,支持多种类型的运算符。在Python中,运算符被分为算术运算符、赋值运算符、复合赋值运算符、比较运算符和逻辑运算符等。本文将从基础到进阶进行分析,并通过一个综合案例展示其实际应用。
|
1天前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
1天前
|
机器学习/深度学习 人工智能 算法框架/工具
Python入门:1.Python介绍
Python是一种功能强大、易于学习和运行的解释型高级语言。由**Guido van Rossum**于1991年创建,Python以其简洁、易读和十分工程化的设计而带来了庞大的用户群体和丰富的应用场景。这个语言在全球范围内都被认为是**创新和效率的重要工具**。
Python入门:1.Python介绍
|
11天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
22天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
197 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!

热门文章

最新文章

推荐镜像

更多