python - 使用 matplotlib 在 Python 中绘制参数图

标签 python python-2.7 matplotlib

我正在尝试使用 Python 2.7 中的 matplotlib 以参数方式绘制两个时间函数。这是我尝试在代码中执行的操作:

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)

# for x_0 = w = 1:
t_range = np.arange(0, 2*np.pi, np.pi/4)
for t in t_range:
    plt.plot(x(t, 1, 1), x_prime(t, 1, 1))
plt.show()

但是,我的绘图上没有显示任何内容。轴已标记,但没有绘制任何图形。我之前在 for 循环中绘制过,没有任何问题,那么为什么会在这里发生这种情况?

最佳答案

for循环是你的问题。

这里:

plt.plot(x(t, 1, 1), x_prime(t, 1, 1))

由于 for 循环,t 是一个值而不是一个列表,因此您尝试绘制的 X 和 y 只是单独的点。如果您不指定单个点的标记大小和标记,则 matplotlib 上不会显示单个点。您可以通过一次绘制所有点以形成一条线来解决此问题:

def x(t, x_0, w):
    print(x)
    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)

plt.plot(x(t_range, 1, 1), x_prime(t_range, 1, 1))
plt.show()

如果您仍然想使用 for-loop 方法来绘制点,则需要添加额外的参数:

t_range = np.arange(0, 2*np.pi, np.pi/4)
for t in t_range:
    print(x(t, 1, 1,), x_prime(t, 1, 1))
    plt.plot(x(t, 1, 1), x_prime(t, 1, 1), markersize=3, marker='o')

plt.show()

编辑:要使其一直运行,您只需将第一个点再次添加到数组的末尾即可:

a = x_prime(t_range, 1, 1)
b = x(t_range, 1, 1)
a = np.append(a, [a[0]])
b = np.append(b, [b[0]])

plt.plot(a, b)
plt.show()

关于python - 使用 matplotlib 在 Python 中绘制参数图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49952574/

相关文章:

python - 0 和 255 都为 'gray' 颜色图提供黑色图像,这是为什么?

python - 如何在python中使用matplotlib制作空心方形标记

python - 如何在 Git 中只包含另一个存储库中的一个文件夹?

python - MQTT客户端收不到消息

python-2.7 - Python多处理从队列中获取结果

python - 'SELECT LAST_INSERT_ID()' 处的语法错误

python - 使用和不使用 ':' 运算符删除 python 中的列表

python - 如何从没有标识符的 <td> 属性中仅提取网络中的数字(by beautiful soup)

python - 当属性不存在时返回 None

python - 如何创建具有多个独立 DynamicMap 绘图的 Holoviews 应用程序?