【python】plt画图“标准流程” | figure,axes这些关系

本文详细介绍了使用Python进行绘图的基本概念,包括figure和axes的作用,以及如何利用它们绘制子图。此外,还提供了如何设置坐标轴名称、范围及图例等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

就是说,每次在使用python里的plt画图的时候,总有部分代码不熟悉,比如画子图这些,然后在网上找的代码都有点不太一样,总感觉很深奥的,这次笔记就把这些画图的技巧从头到脚好好学习一下,也相当于是给数学建模里面画图做准备。

一、首先搞懂plt,figure,axes这些概念

以前用matlab用的比较多,里面画子图的时候直接:figure(1),subplot(121)这种,但是在python里调用的方式好像又不太一样了。
上网查找了资料,得到以下知识点:
1)figure相当于大画布,整个作图的大环境
2)axes相当于是小画布,一个figure上能有很多的axes(通过subplot 来设置他们的排列顺序)
3)经典问题:plt.plot和ax.plot的区别
相比于前者,后者相当于是线生产出figure 再生产出axes画了一个图。plt.plot()通过plt.gca()获得当前的Axes,再调用ax.plot()方法实现绘图(摘抄自网络:https://www.zhangjunbk.com/article/27082)。然这句话读起来确实有一些拗口,就这么说吧,真的要标准的画图,用ax.plot肯定是要标准一些的。 我称之其为《最标准的过程》(我自己定义的)

二、“标准过程”

那么这个标准过程是怎么弄的呢:

import matplotlib.pyplot as plt
fig,axes=plt.subplots(figsize = (10, 5))
plt.show()

在这里插入图片描述
这张图看起来好像是plt.plot差球不多
figsize 是指定大画布figure的长度
要是我想多画几个子图呢,可以在前面两个参数处进行设置,比如这里设置的是2排3列。

import matplotlib.pyplot as plt
fig,axes=plt.subplots(2,3,figsize = (10, 5))  #这个参数默认的情况下是1
plt.show()

在这里插入图片描述
这样axes其优势是不是进一步凸显出来了,貌似plt不能直接这样subplot吧(主要还是matlab用习惯了,)
然后后面的作图就按步就班了,该画啥就画啥。
比如我在第1,1个图片里画抛物线图,第2,2个图片里面画散点图

import matplotlib.pyplot as plt
import numpy as np
import random
x=np.arange(1,10,1)
y= x**2

Ix=[random.randrange(0,100) for i in range(100)]
Iy=[random.randrange(0,100) for i in range(100)]
fig,axes=plt.subplots(2,3,figsize = (10, 5))  #这个参数默认的情况下是1
axes[0][0].plot(x,y)
axes[1][1].scatter(Ix,Iy)
plt.show()

在这里插入图片描述

三.一些需要注意的细枝末节的操作(坐标轴等等)

添加坐标轴名称:

axes[0][0].set_xlabel('x') #设置横坐标名称

设置坐标轴范围:

axes[0][0].set_xlim(0,10) #设置坐标轴范围

设置标签:

axes[0][0].plot(x,y,label='抛物线')
axes[0][0].legend(loc='best')

总代码:

import matplotlib.pyplot as plt
import numpy as np
import random
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False ## 设置正常显示符号
x=np.arange(1,10,1)
y= x**2

Ix=[random.randrange(0,100) for i in range(100)]
Iy=[random.randrange(0,100) for i in range(100)]
fig,axes=plt.subplots(2,3,figsize = (15, 10))  #这个参数默认的情况下是1
axes[0][0].plot(x,y,label='抛物线')
axes[0][0].set_title('抛物线') #设置子图标题
axes[0][0].set_xlabel('x') #设置横坐标名称
axes[0][0].set_ylabel('y') #设置纵坐标名称
axes[0][0].legend(loc='best')
axes[0][0].set_xlim(0,10) #设置坐标轴范围

axes[1][1].scatter(Ix,Iy)
plt.show()

在这里插入图片描述
在这里插入图片描述
当然细枝末节肯定不止这一点,我只放了我个人觉得比较重要的。

任务描述 本关任务:学习掌握matplotlib的第一个图形线形图,并能够使用线形常用配置。 相关知识 为了完成本关任务,你需要掌握:1.如何绘制线形图,2.如何为线形图设置颜色风格和坐标轴。 适用场景: 折线图适合二维的大数据集,尤其是那些趋势比单个数据点更重要的场合。它还适合多个二维数据集的比较。 绘制线形图 在所有图形中,最简单的应该就是线性方程y = f (x) 的可视化了。来看看如何创建这个简单的线形图。要画Matplotlib图形时,都需要先创建一个图形fig 和一个坐标轴ax。创建图形与坐标轴的最简单做法是: import matplotlib.pyplot as plt#导入模块 plt.style.use('seaborn-whitegrid')#设置matplotlib画图样式 fig = plt.figure() ax = plt.axes() 在Matplotlib中,figureplt.Figure类的一个实例)可以被看成是个能够容纳各种坐标轴、图形、文字和标签的容器。就像你在图中看到的那样,axesplt.Axes类的一个实例)是一个带有刻度和标签的矩形,最终会包含所有可视化的图形元素。 在这里我们一般使用变量fig表示一个图形实例,用变量ax表示一个坐标轴实例。接下来使用ax.plot画图,从简单的正弦曲线开始: fig = plt.figure() ax = plt.axes() x = np.linspace(0, 10, 1000) ax.plot(x, np.sin(x)) 也可以使用pylab接口画图,这时图形与坐标轴都在底层执行,执行结果和上图一样:plt.plot(x, np.sin(x)) 试想下如果我们重复调用plot命令会发生什么,它会在一张图中创建多条线: plt.plot(x, np.sin(x)) plt.plot(x, np.cos(x)) 设置颜色和风格 在画图的过程中通常对图形的第一次调整是调整它线条的颜色与风格。 plt.plot()函数可以通过相应的参数设置颜色和风格,修改颜色使用color参数,它支持各种颜色值的字符串,具体使用如下: plt.plot(x, np.sin(x - 0), color='blue') # 标准颜色名称 plt.plot(x, np.sin(x - 1), color='g') # 缩写颜色代码(rgbcmyk) plt.plot(x, np.sin(x - 2), color='0.75') # 范围在0~1的灰度值 plt.plot(x, np.sin(x - 3), color='#FFDD44') # 十六进制(RRGGBB,00~FF) plt.plot(x, np.sin(x - 4), color=(1.0,0.2,0.3)) # RGB元组,范围在0~1 plt.plot(x, np.sin(x - 5), color='chartreuse') # HTML颜色名称 常用颜色对应值: 取值 颜色 b blue g green r red c cyan m magenta y yellow k black w white 如果不指定颜色,matplotlib会为多条线自动循环使用一组默认的颜色。设置样式使用linestyle参数: plt.plot(x, x + 0, linestyle='solid') plt.plot(x, x + 1, linestyle='dashed') plt.plot(x, x + 2, linestyle='dashdot') plt.plot(x, x + 3, linestyle='dotted') #也可以用下面的简写形式 plt.plot(x, x + 4, linestyle='-') # 实线 plt.plot(x, x + 5, linestyle='--') # 虚线 plt.plot(x, x + 6, linestyle='-.') # 点划线 plt.plot(x, x + 7, linestyle=':') # 实点线 还可以将linestyle和color编码组合起来,作为plt.plot()函数的一个非关键字参数使用: plt.plot(x, x + 0, '-g') # 绿色实线 plt.plot(x, x + 1, '--c') # 青色虚线 plt.plot(x, x + 2, '-.k') # 黑色点划线 plt.plot(x, x + 3, ':r'); # 红色实点线 设置坐标轴上下限 虽然matplotlib会自动为你的图形选择最合适的坐标轴上下限,但是有时自定义坐标轴上下线可能会更好。调
最新发布
03-31
<think>嗯,用户想知道怎么用matplotlib画第一个线形图,还有设置颜色风格和坐标轴限制。首先,我得回忆一下matplotlib的基础步骤。通常,导入库之后需要创建数据,然后画图,再调整各种设置,最后显示或保存图像。 用户提到线形图,所以应该用plt.plot()函数。数据准备方面,可能需要用numpy生成一些示例数据,比如x轴用linspace生成,y轴可能是sin或cos函数。然后,颜色设置的话,我记得在plot函数里可以用color参数,或者直接用缩写,比如'r'代表红色,'g'是绿色。线形风格方面,比如虚线、点线,可以通过linestyle参数设置,或者像'--'这样的符号。 坐标轴限制的话,应该用plt.xlim()和plt.ylim()来设定范围。可能还需要设置标签和标题,让图表更清晰。另外,用户可能对图例、网格线这些也有兴趣,不过问题里没提到,但作为常用配置,或许可以提一下。 还要注意代码的结构,先导入必要的库,生成数据,然后一步步添加配置。可能还要提到如何调整图的尺寸,比如用plt.figure(figsize=(宽,高))。同时,引用中的例子有用到这些方法,比如引用[1]中的例子创建了视图,并设置了轴域的位置,但用户的问题主要是基础线图,所以可能不需要嵌套子图,但坐标轴范围设置是重点。 颜色设置的详细内容可以参考引用[2],里面提到了facecolor参数,不过在线图中可能用color参数更多。引用[3]里提到了线条样式和颜色,以及缩放数据的方法,这可能对调整坐标轴范围有帮助,比如如果数据范围太大,可以适当缩放再绘图。 需要确保代码示例正确,比如正确使用plt.plot()的参数,设置颜色和线型,然后正确应用xlim和ylim。另外,要提醒用户记得plt.show()来显示图像,尤其是在非Jupyter环境中。 可能用户是刚开始学matplotlib,所以步骤要详细,代码要简洁明了。常见的错误可能包括忘记导入numpy或者matplotlib,或者参数名称拼写错误,比如color写成colour,所以代码中要正确拼写。 总结一下,步骤应该是:导入库,生成数据,绘制线图,设置颜色和线型,配置坐标轴范围,添加标签和标题,显示图表。然后给出示例代码,并解释每个部分的作用。可能还需要提到其他常用配置,比如网格线、图例,但根据用户问题,重点在颜色、风格和坐标轴限制。</think>### 如何使用Matplotlib绘制线形图及配置颜色风格与坐标轴限制 #### **1. 基础绘图流程** Matplotlib绘制线形图的核心步骤包含数据准备、图形绘制、样式配置三个环节。以下是具体实现: ```python import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.linspace(-np.pi, np.pi, 100) # 生成-π到π的100个等间距点[^1] y = np.sin(x) # 计算正弦值 # 创建画布并绘图 plt.figure(figsize=(8, 4)) # 设置画布尺寸(宽8英寸,高4英寸)[^1] plt.plot(x, y, color='g', linestyle='--', linewidth=2) # 绿色虚线,线宽2[^3] # 配置坐标轴范围 plt.xlim(-np.pi, np.pi) # 设置x轴范围[-π, π] plt.ylim(-1.5, 1.5) # 设置y轴范围[-1.5, 1.5] # 添加标签和标题 plt.xlabel("X轴", fontsize=12) plt.ylabel("Y轴", fontsize=12) plt.title("正弦函数线形图", fontsize=14) plt.grid(True) # 显示网格线 plt.show() # 显示图形 ``` #### **2. 关键参数说明** | **配置项** | **参数示例** | **作用** | |--------------------|----------------------------------|-------------------------------------------------------------------------| | 颜色 (`color`) | `'r'`(红)、`'#FF00FF'`(HEX) | 控制线条颜色,支持颜色名称缩写、HEX值或RGB元组[^2] | | 线型 (`linestyle`) | `'-'`(实线)、`':'`(点线) | 定义线条样式,可选值包括`'-'`、`'--'`、`':'`、`'-.'` | | 线宽 (`linewidth`) | `2`、`3.5` | 调整线条粗细,数值越大线越粗 | | 坐标轴限制 | `plt.ylim(0,10)` | 限定坐标轴显示范围,避免数据边缘区域被截断 | #### **3. 扩展配置技巧** - **颜色风格组合**:通过`fmt`参数快速定义颜色和线型,例如`plt.plot(x, y, 'g--')`等效于单独设置`color='g'`和`linestyle='--'` - **多曲线叠加**:多次调用`plt.plot()`可在同一画布绘制多条线形图 - **坐标轴刻度**:使用`plt.xticks()`和`plt.yticks()`自定义刻度标签,例如: ```python plt.xticks([-np.pi, 0, np.pi], ['-π', '0', 'π']) # 将数字标签替换为π符号 ``` #### **4. 效果对比** 原始默认样式与配置后样式的对比: 1. **默认样式**:线条为蓝色实线,坐标轴自动适配数据范围 2. **配置后**:绿色虚线,坐标轴范围固定为[-π, π]×[-1.5,1.5],含网格线和自定义标签 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值