如何用Python绘制时间范围内距离与速度的函数图像?
解决Python函数绘图的问题
你的核心问题在于没有生成3到6之间的连续时间序列,仅用单个x=10和两个端点的列表,导致函数只能计算单个数值,无法绘制连续曲线。同时原代码中构造DataFrame时,单个数值和长度为2的列表不匹配,必然会报错。以下是修正方案:
关键修正步骤
- 用
np.linspace生成连续时间点:生成3到6之间的均匀分布数值,保证曲线平滑 - 利用numpy向量化运算:直接用数组计算距离和速度,无需手动循环
- 构造匹配长度的DataFrame:让时间、距离、速度三个数组长度一致,避免报错
修正后的完整代码
import pandas as pd import matplotlib.pyplot as plt import numpy as np # 生成3到6之间的100个连续时间点,num越大曲线越平滑 time = np.linspace(3, 6, num=100) # 用numpy数组直接计算距离和速度,自动完成逐元素运算 distance = (time**2 / 2 - np.cos(5*time) - 7) speed = (time + 5*np.sin(5*time)) # 构造结构正确的DataFrame,三个数组长度完全匹配 df = pd.DataFrame({ 'Time': time, 'Distance': distance, 'Speed': speed }) # 绘制双曲线图像,自定义标注让图表更清晰 ax = df.plot(x='Time', title='Distance and Speed over Time', xlabel='Time (hours)', figsize=(10, 6)) # 手动修改图例,明确两个指标的单位 ax.legend(['Distance (km)', 'Speed (km/h)']) # 给y轴设置复合标签 ax.set_ylabel('Distance (km) / Speed (km/h)') plt.show()
额外说明
np.linspace(3, 6, num=100):生成从3到6的100个均匀间隔数值,替换了你原来的单个x值和短列表,这是绘制连续函数的基础- numpy的数学函数(如
np.cos、np.sin)天生支持数组运算,会自动对数组中的每个元素执行计算,不用写for循环 - 构造DataFrame时,确保所有列的长度一致,这是Pandas能正常生成表格的前提
内容的提问来源于stack exchange,提问作者Germán Mendoza
相关产品推荐
相关产品推荐

