如何向现有图形添加新图?
How can I add a new plots to existing figures?
我是Python的新手,过去主要使用MatLab。我正在重写我的一个 MatLab 脚本,想知道如何向图形添加绘图。似乎在 python 中我一次只能打开一个图形,并且必须在打开第二个图形之前手动关闭 window。我的原始脚本有几百行长,但这是我想做的事情的 MWE。
import matplotlib.pyplot as plt
import numpy as np
#from mpl_toolkits import mplot3d
lst = [ 1, 1.5, 2, 4.5]
alpha= np.array(lst)
#initialize tables for plots
xtable = []
ytable = []
y2table = []
#determine whether lst is a vector or an array for number of iterations of inner and outer loops
def size(arr):
if len(arr.shape) == 1:
return arr.shape[0], 1
return arr.shape
[nn,mm] = size(alpha)
#create and plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
plt.plot(xtable,ytable)
plt.hold on
#plot2
plt.plot(xtable,y2table)
plt.hold on
在我的脚本中,这些实际上是 3D 图,但我认为这里没有必要。我只希望 for 循环为 lst 中的每个值 运行 并以两个数字结束,每个数字有 4 个图。 lst 的大小不固定,否则我会在循环中生成数据并稍后绘制。
提前感谢您的帮助
跟进 tdy 的评论:
#create plots:
fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()
#plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
ax1.plot(xtable,ytable)
#plot2
ax2.plot(xtable,y2table)
我是Python的新手,过去主要使用MatLab。我正在重写我的一个 MatLab 脚本,想知道如何向图形添加绘图。似乎在 python 中我一次只能打开一个图形,并且必须在打开第二个图形之前手动关闭 window。我的原始脚本有几百行长,但这是我想做的事情的 MWE。
import matplotlib.pyplot as plt
import numpy as np
#from mpl_toolkits import mplot3d
lst = [ 1, 1.5, 2, 4.5]
alpha= np.array(lst)
#initialize tables for plots
xtable = []
ytable = []
y2table = []
#determine whether lst is a vector or an array for number of iterations of inner and outer loops
def size(arr):
if len(arr.shape) == 1:
return arr.shape[0], 1
return arr.shape
[nn,mm] = size(alpha)
#create and plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
plt.plot(xtable,ytable)
plt.hold on
#plot2
plt.plot(xtable,y2table)
plt.hold on
在我的脚本中,这些实际上是 3D 图,但我认为这里没有必要。我只希望 for 循环为 lst 中的每个值 运行 并以两个数字结束,每个数字有 4 个图。 lst 的大小不固定,否则我会在循环中生成数据并稍后绘制。
提前感谢您的帮助
跟进 tdy 的评论:
#create plots:
fig1, ax1 = plt.subplots()
fig2, ax2 = plt.subplots()
#plot data
for kk in range(nn):#= 1:nn
x = [i for i in range(0, 10)]
y = [alpha[kk]*i for i in range(0, 10)]
y2 = [alpha[kk]*i**2 for i in range(0, 10)]
#data for plot(s)
xtable += [x]
ytable += [y]
y2table += [y2]
#plot1
ax1.plot(xtable,ytable)
#plot2
ax2.plot(xtable,y2table)