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

Python 2.7中使用matplotlib绘制参数图无图形显示问题

问题排查与解决

你的代码看不到图形的核心原因是:每次调用plt.plot()时只传入了单个点的坐标,而matplotlib的plot()函数默认是绘制连续线段——单个点构不成线段,所以自然看不到任何图形。

下面给你两种可行的解决方法:

方法1:一次性计算所有点并绘制曲线(推荐)

这种方式更高效,也符合matplotlib的常规使用方式:先批量计算出所有t对应的x(t)和x'(t)数组,再一次性绘制整条曲线,还能得到更平滑的图形。

修改后的代码:

import matplotlib.pyplot as plt
import numpy as np

def x(t, x_0, w):
    return x_0*np.cos(w*t)

def x_prime(t, x_0, w):
    return -x_0*w*np.sin(w*t)

# 缩小步长让曲线更平滑,比如用np.pi/100替代原步长
t_range = np.arange(0, 2*np.pi, np.pi/100)
# 批量计算所有时间点对应的x和x'值
x_vals = x(t_range, 1, 1)
x_prime_vals = x_prime(t_range, 1, 1)

# 绘制整条相图曲线
plt.plot(x_vals, x_prime_vals)
plt.xlabel('x(t)')
plt.ylabel("x'(t)")
plt.title('Phase Plot of Harmonic Oscillator')
plt.show()

方法2:逐个绘制离散采样点

如果你确实需要单独显示每个t对应的采样点,可以在plot()中指定标记样式,让单个点可视化:

修改后的代码:

import matplotlib.pyplot as plt
import numpy as np

def x(t, x_0, w):
    return x_0*np.cos(w*t)

def x_prime(t, x_0, w):
    return -x_0*w*np.sin(w*t)

t_range = np.arange(0, 2*np.pi, np.pi/4)
for t in t_range:
    # 添加marker参数显示单个点,还可自定义颜色、大小等
    plt.plot(x(t, 1, 1), x_prime(t, 1, 1), marker='o', color='darkorange', markersize=6)

plt.xlabel('x(t)')
plt.ylabel("x'(t)")
plt.show()

内容的提问来源于stack exchange,提问作者curious_cosmo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:33:25