user1594303 user1594303 - 2 months ago 15
Python Question

Conditional function plotting in matplotlib

My aim is to plot a function with two variable t and x.
we assign 0 to x if 0

import matplotlib.pyplot as plt
import numpy as np
t=np.linspace(0,5,100)
def x(i):
if i <= 1:
j = 1
else :
j = 0
return j
y = 8*x(t)-4*x(t/2)-3*x(t*8)

plt.plot(t,y)
plt.ylabel('y')
plt.xlabel('t')
plt.show()


it return an error :

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Answer

what do you want to do with that code? take a look t is a np.array then you use it as a single number the element wise operator didn’t work in that case maybe you prefer using a loop like:

import matplotlib.pyplot as plt
import numpy as np
t=np.linspace(0,5,100)
def x(i):
    if i <= 1:
        j = 1
    else :
        j = 0
    return j
y = []
for i in t:
    y.append(8*x(i)-4*x(i/2)-3*x(i*8))

# or using list comprehensions
y = [8*x(i)-4*x(i/2)-3*x(i*8) for i in t]

plt.plot(t,y)
plt.ylabel('y')
plt.xlabel('t')
plt.show()
Comments