matplotlib基本使用语法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

最近学习中,发现好久没有使用过matplotlib绘图,语法生疏了,基本语法都要询问ChatGPT,在本博客中对一些常用语法进行复习一下,个人能力有限,有错误再所难免欢迎大家评论区指正。
注:本博客所有演示均在jupyter中演示。

1 解决中文乱码的两行代码和一个多个子图设置全局字体大小(让图比例更加协调的一行代码)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为黑体或其他中文字体名称
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题
# 设置全局的字体大小
plt.rc('font', size=30)
plt.grid(True)  # 绘图添加网格的代码,加上也会使得图更好看些

一、matplotlib是什么?

Matplotlib是一个用于绘制图表和数据可视化的Python库。它提供了一种类似于MATLAB的绘图接口,可以创建各种类型的图表,如折线图、散点图、直方图、饼图等。Matplotlib非常灵活,用户可以自定义图表的各个方面,包括线条样式、颜色、标签、图例等。这使得Matplotlib成为科学计算、数据分析和机器学习等领域中常用的工具之一。

二、matplotlib入门

1.引入库

import matplotlib.pyplot as plt

2. figure对象

figure对象理解成一张画布,有了这张画布我们才能在这张画布上面画图。

fig = plt.figure()

输出:
在这里插入图片描述
可以看到是一个figure对象。

3. subplot子图

(1)子图创建方式1

有了画布,想想现实中一张画布只能画一张图吗?显然不是的,可以分区域画不同的图。这样也是的,将一个子图分成不同区域的子图,我们可以在不同子图上面画不同图像。
.add_subplot(a,b,c) 方法 — 向figure对象中添加子图, a,b是子图的分块情况,c是你选取的那个子图位置。
. add_subplot返回的是AxesSubplot子图对象

fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
plt.show()

输出:在这里插入图片描述
翻阅过很多书籍,都是一上来直接画图,最基本的基本都没有提及,因此给读者一种很混乱的感觉,介绍了上面两个最大的API接口在上手下面的具体绘图,思路就会清晰很多了。

(1)子图创建方式2 —(最近发现这种用法也挺好用的,plt.subplots())

import matplotlib.pyplot as plt  
# 使用子图对象的方式
fig, ax = plt.subplots(2,2,constrained_layout=True, figsize=(16,8))
# constrained_layout=True 自适应布局,防止子图有互相遮盖的情况
# 准备数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 1, 4, 5]
x1 = [2,3,4,5,6]
y1= [3,4,5,6,7]
# 绘制散点图
# 另外如果是一行子图的画,用ax[0]这样也是可以的
ax[0,0].scatter(x, y, color ='red', linestyle = '--',marker = '+',label = 'line')
# 添加标题和标签
# ax1.title('Scatter Plot Example')
ax[0,0].set_title('Scatter Plot Example')
ax[0,0].set_xlabel('X-axis')
ax[0,0].set_ylabel('Y-axis')
# 子图里面添加标签不光要签名加速 label属性,还要加上下面这行代码
ax[0,0].legend()

# 绘制折线图
ax[1,0].plot(x, y, color ='red', linestyle = '--',marker = '+',label = 'line1')
ax[1,0].plot(x1, y1, color ='blue', linestyle = '-',marker = 'o', label = 'line2')
# 添加标题和标签
ax[1,0].set_title('Line Plot Example')
ax[1,0].set_xlabel('X-axis')
ax[1,0].set_ylabel('Y-axis')
ax[1,0].legend()
# 在整个大图上设置标题
fig.suptitle('Overall Title', fontsize=16)
# 显示图形
plt.show()

【注】:图的比例figsize=(16,8)要自己不断尝试,结合# 设置全局的字体大小
plt.rc(‘font’, size=30)可以调整全局字体。需要不断尝试才能找到最佳比例
在这里插入图片描述

三、matplotlib画图

1. 散点图、折线图

开始画图之前,先来讲一个很重要的事实,我们分了那么多子图,怎么控制在哪一个子图上面画图呢?

  1. 直接利用子图对象上的画图方法
    类似 ax.plot()这种调用方法,但在实际中我发现没有语法提示这样,效率很慢,时间画在这个上面感觉很浪费,因此我并不建议
  2. 直接使用plt.这种方法,不指定任何子图(比较推荐这种)
    那么问题来了,不指定子图怎么知道画哪里呢?其实很好解决,plt默认追踪其前面的第一章画布,我们只要在对于位置写入画图代码就能准确控制了。另外这种方式就减少了很多不必要的麻烦。
    下面几个例子分别对上述方法进行了演示,文字叙述可能不是很清晰,看演示就明白了

1.1 单独一张画布

fig = plt.figure()
x = [1,2,3,4,5]
y = [5,6,7,8,9]
x1 = [5,4,3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值