matplotlib之pyplot模块plot函数基础一(函数功能、xy参数基本取值,多组数据)

本文详细介绍了Matplotlib中plot函数的使用方法,包括基本参数设置、不同数据类型的处理方式及多组数据的绘制技巧。
该文章已生成可运行项目,

plot函数的功能

plot函数是matplotlib中最常见的绘图函数,作用是以x为自变量y为因变量绘制的带结点标记的线条或以x,y为坐标的坐标点(Plot y versus x as lines and/or markers)。
下面通过实例简单演示plot函数的功能。
根据下图可知,plot函数可以绘制带结点标记的线,也可以线和标记点任选其一。
plot函数相当于根据y=f(x)关系,先以x,y为坐标绘制结点,然后用直线连接结点。
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221)
# 带标记点的线
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], marker='o')
plt.subplot(222)
# 只有线,没有标记点
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.subplot(223)
# 没有线,只有标记点
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'o')
plt.subplot(224)
# 绘制y=sin(x)线
x = np.arange(-4,4,0.05)
y = np.sin(x)
plt.plot(x, y)

plt.show()

plot函数中x,y参数的基本取值

plot函数的基本调用签名为plot([x], y, [fmt], *, data=None, **kwargs)
x,y参数即为线条结点或坐标点的x,y坐标。x,y参数取值非常灵活,这也是plot函数的一大特色。
x,y参数可以是标量,也可以是类似数组的数据结构(列表,numpy数组,pandas dataframe等),通常为1维数组,数组的维度最好一致。

import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221)
# xy为标量
plt.plot(1, 2, marker='o')
plt.subplot(222)
# xy为列表
plt.plot([1, 2, 3, 4], [1, 4, 9, 16], marker='o')
plt.subplot(223)
# xy为numpy数组
x = np.arange(-4,4,0.5)
y = np.sin(x)
plt.plot(x, y)
plt.subplot(224)
# xy在第一维度上必须一致
plt.plot([1, 2, 3, 4], [[1], [4], [9],[16]], 'o')

plt.show()

plot函数中x参数的默认值

根据plot函数调用签名可知x参数是可选的,默认值为range(len(y))
下面的案例中x参数省略了,根据下图可知4个结点的x坐标为0,1,2,3,符合range(len([1, 2, 3, 4]))的取值。
在这里插入图片描述

import matplotlib.pyplot as plt

# 只有y参数,x默认为range(len(y))
plt.plot([1, 2, 3, 4],marker='o')
plt.show()

plot函数中xy为带标签的数据

plot函数的基本调用签名为plot([x], y, [fmt], *, data=None, **kwargs)

带标签的数据可以理解为可以用data['i']方式访问的数据,可以是字典、pandas dataframe、numpy数组等。这时xy参数的即为data参数值对应的标签数据。

下面以字典为例简单说明如何使用带标签的数据。
在这里插入图片描述

import matplotlib.pyplot as plt
# d为带标签的数据
d = {'x': [1, 2, 3], 'y': [1, 2, 3]}
# x,y参数分别为d['x'],d['y'],data参数为d
plt.plot('x', 'y', data=d, marker='o')
plt.show()

对于dataframe来说,假设有一个表格,其中有很多列,每一个列有一个标签。当我们想使用其中的两列作图的时候,将表格整体传入,只要指定了标签,plot函数就会帮自动把这两列取出来作图。

plot函数绘制多组数据

plot函数绘制多组数据有三种方法:

  • 多次调用plot函数
    例如:
    plot(x1,y1)
    plot(x2,y2)

  • plot函数中调用多组xy参数
    例如:plot(x1,y1,x2,y2)

  • plot函数中使用2维数组作为xy参数

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt

x1 = [1, 2, 3]
y1 = [1, 2, 3]
x2 = [4, 5, 6]
y2 = [4, 5, 6]

plt.figure(figsize=(9, 3.1))
# 多次调用plot函数
plt.subplot(131)
plt.plot(x1, y1)
plt.plot(x2, y2)
# 传递多组xy参数
plt.subplot(132)
plt.plot(x1, y1, x2, y2)
# 传递2维数组为xy参数,第1列为x,其余列为y
plt.subplot(133)
x = np.array([[0, 1, 2, 3], 
              [3, 4, 5, 6], 
              [6, 7, 8, 9], 
              [9, 10, 11, 12]])
plt.plot(x[:, 0], x[:, 1:])

plt.tight_layout()
plt.show()

本文章已经生成可运行项目
<think>我们已知引用[1]中提供了绘制y=log(x)的代码片段,具体如下: 引用[1]中的相关代码: x1 = np.linspace(0.1,10,100) # 对数函数定义域为(0,+∞),这里从0.1开始到10 plt.plot(x1, np.log(x1), 'g') # 使用np.log计算自然对数,即ln(x) 注意:在Python中,使用numpy的log函数就是自然对数(以e为底),即ln(x)。 因此,绘制y=ln(x)的方法总结如下: 1. 导入必要的库:matplotlib.pyplot和numpy。 2. 生成x轴数据:由于ln(x)在x>0时有定义,所以x的取值范围应为(0, +∞)的某个正数区间。 3. 使用np.log(x)计算对数。 4. 使用plt.plot(x, y)绘制图形,并设置标签等。 具体步骤: 步骤1:导入库 import numpy as np import matplotlib.pyplot as plt 步骤2:生成x轴数据,例如从0.1到10,取100个点 x = np.linspace(0.1, 10, 100) 步骤3:计算y = ln(x) y = np.log(x) 步骤4:绘制图形 plt.plot(x, y, label='y = ln(x)') 步骤5:添加标签和标题 plt.xlabel('x') plt.ylabel('y') plt.title('Natural Logarithm Function') plt.legend() 步骤6:显示图形 plt.show() 注意:由于对数函数在x接近0时趋向于负无穷,因此我们通常不会从0开始(因为ln(0)未定义),而且接近0时函数值会急剧下降,所以取点从0.1开始。 另外,引用[3]中提到了些标注坐标轴的方法,但基本绘图步骤如上。 下面给出完整的代码示例: </think>### Python使用`plot`函数绘制y = ln x图像的方法 根据引用[1]和引用[3]提供的示例,绘制自然对数函数$y = \ln x$的步骤如下: #### 完整代码实现: ```python import numpy as np import matplotlib.pyplot as plt # 创建对数函数定义域:x > 0 x = np.linspace(0.01, 10, 400) # 从0.01开始避免取对数错误 # 计算自然对数 y = np.log(x) # np.log表示自然对数ln # 设置图形样式 plt.figure(figsize=(8, 6)) plt.plot(x, y, 'b-', linewidth=2) # 蓝色实线 # 添加坐标轴和标题 plt.axhline(y=0, color='k', linewidth=0.5) # x轴 plt.axvline(x=0, color='k', linewidth=0.5) # y轴 plt.title('Natural Logarithm Function $y = \ln x$') plt.xlabel('x') plt.ylabel('y') # 特殊点标注 plt.plot(1, 0, 'ro') # (1,0)点 plt.annotate('(1, 0)', xy=(1, 0), xytext=(1.2, -0.5)) plt.plot(np.e, 1, 'ro') # (e,1)点 plt.annotate('(e, 1)', xy=(np.e, 1), xytext=(np.e+0.2, 0.8)) # 显示网格和图例 plt.grid(True, linestyle='--', alpha=0.7) plt.legend(['$y = \ln x$']) plt.show() ``` #### 关键说明: 1. **定义域处理**: - 对数函数定义域为$x > 0$,使用`np.linspace(0.01, 10, 400)`避免0值 - 起点0.01确保函数有定义(引用[1]类似处理) 2. **核心函数**: - `np.log(x)`计算自然对数(以$e$为底) - `plt.plot(x, y)`绘制曲线 3. **图形增强**: - `plt.annotate()`标注关键点如$(1,0)$和$(e,1)$(引用[3]方法) - 添加渐近线标注:当$x \to 0^+$时$y \to -\infty$ - 网格线提升可读性 4. **数学表达式**: - 使用LaTeX渲染标题`$y = \ln x$` - 图例显示数学符号 #### 注意事项: 1. **定义域边界**: ```python # 错误示例(导致运行时错误) x = np.linspace(0, 10) # 包含0会导致log(0)未定义 ``` 2. **渐近线特性**: - 当$x$接近0时,曲线趋于$-\infty$ - 曲线通过$(1,0)$,在$(e,1)$处$y=1$ 3. **与其他对数对比**: - `np.log10(x)`:以10为底的对数 - `np.log2(x)`:以2为底的对数 执行后将显示典型对数曲线:从第四象限穿过$(1,0)$进入第象限,呈现单调递增的凹函数特征。 [^1] [^3]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值