You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:15:51