user1594303 - 1 year ago 118
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()
``````

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()
``````
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download