Python Matplotlib 实现基础绘图

1、Matplotlib 的三层结构

Matplotlib 是一个用于在 Python 中创建二维图表的库。为了更好地理解和使用 Matplotlib,重要的是要了解其三层结构:容器层(Container Layer)、辅助显示层(Helper Layer)和图像层(Artist Layer)。这些层级构成了 Matplotlib 的绘图体系结构。

1)容器层(Container Layer)

组件描述
FigureCanvas最底层的容器,代表了绘图的整个窗口或页面。它是一个用于绘制和渲染所有图表元素的物理或概念性的画布。
Figure代表了绘图窗口的顶层容器。一个 Figure 可以包含多个 Axes 对象。
Axes是一个包含图表大部分元素的容器,如线条、标记、文字、标签等,通常与“坐标轴”相关联。一个 Axes 对象代表了图表的一个绘图区域。

2) 辅助显示层(Helper Layer)

辅助显示层是对容器层的补充,提供了一系列方便的方法来创建常见的图表(如直方图、折线图等),并处理诸如刻度定位、布局和颜色映射等常见情况。

组件描述
pyplot 模块是 Matplotlib 的辅助显示层,提供了一组命令式函数来快速生成简单图表。例如,plt.plot()、plt.xlabel()、plt.ylabel()等。
Axis 和 Tick 对象Axis 对象处理刻度线、网格线、标签等,而 Tick 对象是 Axis 的组件,用于处理刻度线和刻度标签。

3)图像层(Artist Layer)

图像层是 Matplotlib 的核心层,包含了用于绘制图表的所有对象(称为艺术家对象,或简称“艺术家”)。

组件描述
Artist包括 Text(文本),Line2D(线条),Rectangle(矩形,用于绘制柱状图)、AxesImage(图像)等。这些对象知道如何使用渲染器在画布上绘制自己。
Renderer负责在 FigureCanvas 上绘制 Artist。用户通常不直接与渲染器交互,而是通过艺术家对象的方法间接进行。

2、使用画布(Figure)

Matplotlib 中,画布是指整个图形界面或图形的总体背景,通常在绘图之前设置。在 Matplotlib 中,画布由 Figure 对象表示。可以通过调整 Figure 对象的属性来自定义画布的大小、分辨率和边框等。plt.figure() 函数用于创建新的图形窗口,并提供了许多用于自定义这些图形窗口的参数。常用参数如下,

参数描述
figsize图形的大小,以英寸为单位,传递一个元组(宽度,高度)。
dpi图形的分辨率,以每英寸点数(dots per inch)表示。
facecolor图形的背景颜色。
edgecolor图形边框的颜色。
frameon布尔值,用于控制是否绘制图形边框。
num图形的编号或名称。如果编号已存在,则使用已存在的图形。
tight_layout布尔值或字典。如果为 True,则使用 tight layout 调整子图布局以适应图形区域。

使用示例:Python Matplotlib 实现基础绘图-CJavaPy

3、绘制折线图

折线图是最基本的图表类型,通常用于显示随时间变化的数据。plt.plot() 函数是用于创建线图的基本工具。常用参数如下,

参数描述
x线图中点的 x 坐标。
y线图中点的 y 坐标。
color线条的颜色,可为颜色代码或颜色名称。
linestyle线条的样式,例如 '-', '--', '-.', ':' 等。
linewidth线条的宽度。
marker数据点的标记样式,例如 'o', '*', '+' 等。
markersize标记的大小。
label用于图例的标签。
alpha线条的透明度,范围 0(透明)至 1(不透明)。

使用示例:

import matplotlib.pyplot as plt

# 示例数据
x = range(1, 6)
y = [1, 4, 6, 8, 4]

# 创建线图
plt.plot(x, y, color='green', linestyle='--', linewidth=2, marker='o', markersize=10, label='Data Line', alpha=0.7)

# 添加图例
plt.legend()

# 添加标题和轴标签
plt.title('Line Plot Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 显示图表
plt.show()

4、 绘制散点图

散点图通常用于显示两个变量之间的关系。plt.scatter() 函数用于创建散点图,是数据可视化中常用的一个工具。常用参数如下,

参数描述
x散点的 x 坐标。
y散点的 y 坐标。
s散点的大小,可以是单个数值或与数据点数量相等的数组。
c散点的颜色,可以是单个颜色格式的字符串或一系列颜色。
marker标记的样式,默认为 'o'。
alpha散点的透明度,介于 0(完全透明)和 1(完全不透明)之间。
linewidths标记边缘的线宽。
edgecolors标记边缘的颜色。
label用于图例的标签。

使用示例:

import matplotlib.pyplot as plt

# 示例数据
x = [5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6]
y = [99, 86, 87, 88, 100, 86, 103, 87, 94, 78, 77, 85, 86]
sizes = [210, 410, 312, 214, 415, 312, 213, 210, 410, 312, 214, 415, 312]
colors = ['red', 'green', 'blue', 'yellow', 'pink', 'black', 'orange', 'purple', 'beige', 'brown', 'gray', 'cyan', 'magenta']

# 创建散点图
plt.scatter(x, y, s=sizes, c=colors, marker='o', alpha=0.5, linewidths=2, edgecolors='w', label='Data Points')

# 添加图例
plt.legend()

# 添加标题和轴标签
plt.title('Custom Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

# 显示图表
plt.show()

5、 绘制条形图

条形图用于比较不同类别的数据。Matplotlib 库中,plt.bar() 函数是用于创建条形图的常用函数。

常用参数如下,

参数描述
x条形的 x 坐标。
height条形的高度。
width条形的宽度,默认值为 0.8。
bottom条形的起始位置 y 坐标,默认为 None。
align条形的对齐方式,'center' 或 'edge',默认为 'center'。
color条形的颜色。
edgecolor条形边缘的颜色。
linewidth条形边缘的线宽。
tick_label用作条形标签的标签序列。
label用于为条形图添加图例的标签。

使用示例:

import matplotlib.pyplot as plt

# 示例数据
categories = ['Category A', 'Category B', 'Category C', 'Category D']
values = [10, 15, 7, 12]

# 创建条形图
plt.bar(x=categories,          # x 坐标
        height=values,         # 条形的高度
        width=0.6,             # 条形的宽度
        bottom=0,              # 条形的起始位置 y 坐标
        align='center',        # 条形的对齐方式
        color='blue',          # 条形的颜色
        edgecolor='black',     # 条形边缘的颜色
        linewidth=1,           # 条形边缘的线宽
        tick_label=categories, # 条形标签
        label='Value')         # 图例标签

# 添加 x 轴和 y 轴标签
plt.xlabel('Categories')
plt.ylabel('Values')

# 添加图表标题
plt.title('Bar Chart Example')

# 显示图例
plt.legend()

# 显示图表
plt.show()

6、添加额外元素

可以添加更多元素来改进图表,例如图例、网格线和不同的样式。

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制基础图形
plt.figure(figsize=(10, 6))
plt.plot(x, y, label='sin(x)')

# 添加标题和标签
plt.title("Simple Plot of sin(x)")  # 添加标题
plt.xlabel("x")  # x轴标签
plt.ylabel("sin(x)")  # y轴标签

# 添加图例
plt.legend()

# 添加网格
plt.grid(True)

# 添加注释
plt.annotate('Local Max', xy=(1.57, 1), xytext=(2, 1.5),
             arrowprops=dict(facecolor='black', shrink=0.05))
             
# 使用 plt.draw() 显示画布
plt.draw()
# 显示图形
plt.show()

7、保存图形

Matplotlib 中,保存图形到文件是一个简单的过程。可以使用 savefig() 方法来保存图形。常用参数如下,

参数描述
fname输出文件的名称。字符串、类路径对象或类二进制对象。必备参数。
format输出格式。字符串,支持的格式为eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff。默认值为None。
dpi输出图像的分辨率(每英寸的像素点数)。浮点数或'figure',如果值为'figure',输出使用图形的分辨率,默认值为rcParams["savefig.dpi"](默认为'figure')。
qualityjpg文件输出的质量,仅对'jpg'或'jpeg'文件生效。整数,建议取值范围为[1-95],值超过100将会禁用jpeg压缩算法,可能会导致文件过大。默认值为rcParams["savefig.jpeg_quality"](默认值为95)。
facecolor图像的背景色。颜色值或'auto',值为'auto'时,使用当前图形的背景色。默认值为rcParams["savefig.facecolor"](即'auto')。
edgecolor图像边缘颜色。颜色值或'auto',值为'auto'时,使用当前图形边缘颜色。默认值为rcParams["savefig.edgecolor"](即'auto')。
orientationpostscript后端参数。取值范围为{'landscape', 'portrait'}。默认值为'portrait'。
papertype纸张大小,仅支持postscript输出。取值范围为{'letter', 'legal', 'executive', 'ledger', 'a0' - 'a10', 'b0' - 'b10'}。默认值为None。
backend使用非默认后端渲染文件。字符串。可选参数。默认值为None。
metadata用于存储图像元数据的键值对。字典,取值依赖于输出图像格式和后端。可选参数。默认值为None。
pil_kwargs保存图像是传递给PIL.Image.Image.save的参数。字典。可选参数。

使用示例:Python Matplotlib 实现基础绘图-CJavaPy

以上就是“Python Matplotlib 实现基础绘图”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值