Python 控制函数的图形输出
Python controlling figure outputs from functions
如果我从一个函数中生成一个图形,有没有一种简单的方法可以不显示图形输出?我的以下函数总是输出一个数字,即使我在调用函数时有 _
。
import numpy as np
import matplotlib.pyplot as plt
def myfun(a,b):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
plt.figure()
plt.plot(x,z)
myfig = plt.show()
return z, myfig
z, _ = myfun(2,3)
最好在myfun
中不再引入任何输入参数。
你可以这样做:
def myfun(a,b):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
fig, ax = plt.subplots()
ax.plot(x,z)
return z, fig
之后你可以做:
z, fig = myfun(2,3) # nothing is shown
plt.show(fig) # now show the figure
这不是一种优雅的方式,但包括 showfig
输入选项似乎可行。让 showfig=1
显示图形,showfig=0
不显示图形,而是让 myfig
= 字符串。
import numpy as np
import matplotlib.pyplot as plt
def myfun(a,b,showfig):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
if showfig == 1:
plt.figure()
plt.plot(x,z)
myfig = plt.show()
return z, myfig
else:
myfig = 'figure not shown'
return z, myfig
z, myfig = myfun(2,3,0)
如果我从一个函数中生成一个图形,有没有一种简单的方法可以不显示图形输出?我的以下函数总是输出一个数字,即使我在调用函数时有 _
。
import numpy as np
import matplotlib.pyplot as plt
def myfun(a,b):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
plt.figure()
plt.plot(x,z)
myfig = plt.show()
return z, myfig
z, _ = myfun(2,3)
最好在myfun
中不再引入任何输入参数。
你可以这样做:
def myfun(a,b):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
fig, ax = plt.subplots()
ax.plot(x,z)
return z, fig
之后你可以做:
z, fig = myfun(2,3) # nothing is shown
plt.show(fig) # now show the figure
这不是一种优雅的方式,但包括 showfig
输入选项似乎可行。让 showfig=1
显示图形,showfig=0
不显示图形,而是让 myfig
= 字符串。
import numpy as np
import matplotlib.pyplot as plt
def myfun(a,b,showfig):
x = np.linspace(1,10,100)
y = np.linspace(2,20,100)
z = a*x - b*y
if showfig == 1:
plt.figure()
plt.plot(x,z)
myfig = plt.show()
return z, myfig
else:
myfig = 'figure not shown'
return z, myfig
z, myfig = myfun(2,3,0)