4. Matplotlib的清晰表达

个人网站:山海同行
网站地址:https://shanhaigo.cn/
本篇地址:https://shanhaigo.cn/courseContent/121871481879555932160

接上篇,实现了自定义点和线的样式,但是图中表达的x轴、y轴不是很详细,接下来有Matplotlib小伙伴给大家慢慢完善描述信息,达到看图识意!

一、添加刻度

现在我们画的图是北京2024年平均天气,x轴应该是月份,y轴应该是温度,这样我们知道每个月对应的温度趋势。如何添加呢?

Matplotlib给出了x、y的刻度接口,我们要做的就是把刻度信息给到Matplotlib小伙伴就行:

plt.xticks(x, **kwargs)
x:要显示的刻度值
plt.yticks(y, **kwargs)
y:要显示的刻度值

比如,这次我把12月的月份和对应的温度数据,给到Matplotlib就可以实现:

# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)

image.png

中文刻度显示问题,有的图表中文不显示

解决方法如下:

from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

二、添加网格

为了更好的辅助x轴和y轴的对应关系,添加网格
网格语法如下:

grid(color = 'color', linestyle = 'linestyle', linewidth = number)

参数说明:
color:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,‘#008000’ RGB 颜色符串。
linestyle:‘‐’ 实线,‘‐‐’ 破折线,‘‐.’ 点划线,‘:’ 虚线。
linewidth:设置线的宽度,可以设置一个数字。

举例:

# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)

image.png

三、添加轴上描述

添加x轴和y轴的描述信息

# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")

image.png

四、添加图的标题

为整张图添加标题

# 图标题
plt.title("北京2024年平均天气")

image.png

五、添加图例

添加图例前,我们需要另一组数据,同一张表中进行区分

添加深圳温度天气

# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]

# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')

接下来进行添加图例

# 图例
plt.legend(["北京", "深圳"], loc='best')

image.png

loc参数值如下:

字符串编码
‘best’0
‘upper right’1
‘upper left’2
‘lower left’3
‘lower right’4
‘right’5
‘center left’6
‘center right’7
‘lower center’8
‘upper center’9
‘center’10

完整代码如下

import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

# 画图背景切换
plt.switch_backend('TkAgg')

# 北京2024年平均天气
# 十二个月
x_data = [i for i in range(1, 13)]
# 每个月平均温度
y_data = [-4, -4, 5, 10, 18, 23, 25, 25, 20, 10, 2, -4]

# 深圳2024年平均天气
# 十二个月
sz_x_data = [i for i in range(1, 13)]
# 每个月平均温度
sz_y_data = [19, 22, 26, 27, 28, 28, 28, 28, 27, 25, 22, 20]

# 画布
plt.figure(figsize=(15, 7), dpi=100)

# 绘制折线图
# 实心圆
plt.plot(x_data, y_data)

# 深圳折线图
plt.plot(sz_x_data, sz_y_data, 'o:g')

# 刻度
# 月份刻度
x_ticks_label = ["{}月".format(i) for i in range(1, 13)]
# 温度刻度
y_ticks_label = ["{}℃".format(i) for i in y_data]
# 刻度赋值
plt.xticks(x_data, x_ticks_label)
plt.yticks(y_data, y_ticks_label)

# 网格
# 默认True:显示网格,虚线,透明度为0.5
plt.grid(True, linestyle='--', alpha=0.5)

# 轴描述
plt.xlabel("月份")
plt.ylabel("温度")

# 图标题
plt.title("北京2024年平均天气")


# 图例
plt.legend(["北京", "深圳"], loc='best')

# 生成图片
plt.show()
<think> 我们正在回答用户关于matplotlib.pyplot是什么的问题。根据用户提供的引用和之前的上下文,我们需要给出一个清晰的定义和作用说明。 引用[1]提到了matplotlib.pyplot.hist模块,引用[2]展示了在jupyter中使用matplotlib.pyplot的基本代码,引用[3]则提到了Figure和Axes的概念以及plot函数的使用。 因此,我们可以这样组织回答: 1. 定义:matplotlib.pyplot是Matplotlib库的一个模块,提供类似MATLAB的绘图接口。 2. 作用:用于创建各种静态、动态或交互式的图表和可视化。 3. 常用功能:折线图、直方图、散点图、图像显示等。 4. 基本结构:介绍Figure和Axes的概念(引用[3])。 5. 两种绘图风格:MATLAB风格(plt.plot)和面向对象风格(ax.plot)的区别(引用[3])。 6. 使用示例:展示一个简单的折线图绘制(引用[2])。 注意:用户之前的问题是关于(60000,)数组的可视化,但当前问题独立,我们只需回答matplotlib.pyplot是什么。 我们将按照以下结构回答: 一、定义 二、作用 三、核心概念(Figure和Axes) 四、两种绘图风格 五、简单示例 六、总结 同时,根据用户要求,需要生成相关问题。 </think> ### `matplotlib.pyplot` 的定义与作用详解 #### 一、定义 `matplotlib.pyplot` 是 Python 可视化库 Matplotlib 的核心模块,提供类似于 MATLAB 的绘图接口[^3]。它是一个**状态机接口**(state-based interface),通过维护当前图形(Figure)和坐标轴(Axes)的状态,实现简洁的命令式绘图语法。 数学表达: 设 $D$ 为数据集,$V$ 为可视化函数,则绘图过程可表示为: $$ V(D) = \texttt{plt.plot}(D, \text{参数}) $$ 其中 `plt` 代表 `matplotlib.pyplot` 的缩写别名。 #### 二、核心作用 1. **快速可视化原型** 通过链式调用实现高效绘图: ```python import matplotlib.pyplot as plt # 标准导入方式[^2] plt.figure() # 创建图形容器 plt.plot([1, 2, 3], [4, 5, 1]) # 绘制折线图 plt.title("示例图表") # 添加标题 plt.show() # 显示图形 ``` 2. **图形元素分层控制** 管理可视化组件的层级关系: ```mermaid graph TD A[Figure] --> B[Axes] B --> C[X Axis] B --> D[Y Axis] B --> E[Plot Objects] ``` 3. **双模式绘图接口** - **MATLAB 风格**:全局状态操作 ```python plt.subplot(2,1,1) # 选择子图1 plt.plot(x, y1) plt.subplot(2,1,2) # 选择子图2 plt.hist(data) # 直方图绘制[^1] ``` - **面向对象风格**:显式对象操作 ```python fig, ax = plt.subplots(2) # 创建包含2个子图的Figure对象 ax[0].plot(x, y1) # 在第一个Axes上绘图 ax[1].hist(data) # 在第二个Axes上绘制直方图[^1] ``` #### 三、关键特性 1. **交互式工作流** 在 Jupyter 中配合魔术命令实现即时显示: ```python %matplotlib inline # 嵌入Notebook显示[^2] plt.plot([0,1], [1,0]) # 立即显示图表 ``` 2. **丰富的可视化类型** | 函数 | 用途 | 示例 | |------------------|--------------------|-----------------------| | `plt.plot()` | 折线图/散点图 | 时间序列数据 | | `plt.hist()` | 直方图 | 数据分布分析[^1] | | `plt.imshow()` | 图像显示 | MNIST 数字识别[^3] | | `plt.scatter()` | 散点图 | 高维数据降维可视化 | | `plt.bar()` | 柱状图 | 类别数据对比 | 3. **样式控制系统** ```python plt.style.use('ggplot') # 使用预定义样式 plt.plot(x, y, linewidth=2, # 线宽 linestyle='--', # 虚线样式 marker='o', # 数据点标记 color='#1f77b4')# RGB颜色 ``` #### 四、典型工作流程 ```mermaid sequenceDiagram 用户->>+plt: 1. 创建图形(plt.figure) 用户->>+plt: 2. 添加绘图区(plt.subplot) 用户->>+plt: 3. 绘制数据(plt.plot/plt.hist) 用户->>+plt: 4. 添加装饰(plt.title/plt.legend) 用户->>+plt: 5. 保存/显示(plt.savefig/plt.show) ``` #### 五、应用场景 1. 数据探索分析(EDA) 2. 机器学习结果可视化 3. 科学计算数据呈现 4. 实时数据监控仪表盘 5. 学术论文图表生成 > **提示**:对于大型项目,建议使用面向对象接口 (`fig, ax = plt.subplots()`) 以避免全局状态冲突[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值