图表没有显示'for'循环

  • 本文关键字:for 循环 显示 python graph
  • 更新时间 :
  • 英文 :


我正试图从我的代码生成一个图形。我从"打印"命令中知道,方程式至少部分有效,但它生成的图形是空白的。我不确定为什么,或者是否有其他方法?

我已经尝试了没有'for'循环的代码,但它不断生成错误消息,这就是为什么我尝试了这个方法。这包括np。Linspace中出现的"'float'对象不能被解释为整数"

代码需要通过在0到10秒之间的特定时间以0.1秒的步长检查电压来找到给定系统的电压。提前谢谢你。

for t in np.arange(0, 10, 0.1):
V = (math.e**(-0.06*np.pi*t))*math.sin(2*t - np.pi)
print(V, 'Volts')

fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(t, V)
ax.set_title('Voltage over Time')
ax.set_xlabel('Time(s)')
ax.set_ylabel('Voltage (V)')  

使用此代码,您将始终在V中编写相同的值,因此您只绘制一个值。你必须将V保存在一个列表中,并绘制该列表和np.arange

V = []
for t in np.arange(0, 10, 0.1):
volt=(math.e**(-0.06*np.pi*t))*math.sin(2*t - np.pi)
V.append(volt)
print(volt, 'Volts')

fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(np.arange(0,10,0.1), V)
ax.set_title('Voltage over Time')
ax.set_xlabel('Time(s)')
ax.set_ylabel('Voltage (V)')  

最后的情节是这样的:情节

如果要表示随时间变化的图形,则V和t必须是向量因此,首先使用np.arange创建两个向量,然后在for循环中迭代,根据x[i]enuerate计算每个V[i]这是一个解决方案

import matplotlib.pyplot as plt
import math
import numpy as np
x = np.arange(0, 10, 0.1)
V = np.zeros(x.shape)
for i,t in enumerate(x):
V[i] = (math.e ** (-0.06 * np.pi * t)) * math.sin(2 * t - np.pi)
print(V, 'Volts')
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(x, V)
ax.set_title('Voltage over Time')
ax.set_xlabel('Time(s)')
ax.set_ylabel('Voltage (V)')
plt.show()

最终,你不需要任何循环,使用向量化计算:

import matplotlib.pyplot as plt
import math
import numpy as np
t = np.arange(0, 10, 0.1)
V = (math.e ** (-0.06 * np.pi * t)) * np.sin(2 * t - np.pi)
fig, ax = plt.subplots(figsize=(12, 6))
ax.plot(t, V)
ax.set_title('Voltage over Time')
ax.set_xlabel('Time(s)')
ax.set_ylabel('Voltage (V)')
plt.show()

最新更新