Reputation: 21
How to get many figures without closing first one in matplotlib one by one. My code is as follows:
import matplotlib.pyplot as plt
x = [1,2,3,4,5,6,7,8,9,10]
y = [1,4,9,16,25,36,49,64,81,100]
z=[1,3,4,5,19,13,17,12,15,10]
v=[1,2,4,5,7,8,90,3,2,2]
def func(x,y):
plt.plot(x, y)# I want the first graph to stay and get second one without closing first
plt.show()
return
func(x,y)
myinput=int(input())
if myinput==1:
func(x,z)
else:
func(x,v)
#something like this i want
Upvotes: 1
Views: 2696
Reputation: 701
As a shortened version of @noman's answer:
plt.show(block=False)
For example, I used it like this to generate two plots from one script, without needing to close the first plot:
# first plot
fig = plt.figure()
plt.scatter(.....whatever....)
plt.show(block=False)
# second plot
fig = plt.figure()
plt.line(.....whatever....)
plt.show()
Upvotes: 1
Reputation: 21
#answering myself after spending lot of time
x = [1,2,3,4,5,6,7,8,9,10]
y = [1,4,9,16,25,36,49,64,81,100]
z=[1,3,4,5,19,13,17,12,15,10]
v=[1,2,4,5,7,8,90,3,2,2]
def func(x,y,index):
fig=plt.figure(index)
fig1=fig.add_subplot(1,1,1)
fig1.plot(x, y)
plt.show(block=False)
return
my_input=1
while(my_input!=-1):
my_input=int(input())
func(x,y,my_input)
Upvotes: 1