3

2つの異なる図(fig1とfig2)にまったく同じものをプロットするこの単純なコードがあります。ただし、行ax?.plot(x、y)を2回書き込む必要があります。1回はax1用、もう1回はax2用です。プロット式を1つだけにするにはどうすればよいですか(複数の冗長な式があると、より複雑なコードの問題の原因になる可能性があります)。ax1、ax2.plot(x、y)のようなもの...?

import numpy as np
import matplotlib.pyplot as plt

#Prepares the data
x = np.arange(5)
y = np.exp(x)

#plot fig1
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)

#plot fig2
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)

#adds the same fig2 plot on fig1
ax1.plot(x, y)
ax2.plot(x, y)

plt.show()
4

2 に答える 2

1

次のように、各軸をリストに追加できます。

import numpy as np
import matplotlib.pyplot as plt

axes_lst = []    
#Prepares the data
x = np.arange(5)
y = np.exp(x)


#plot fig1
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
axes_lst.append(ax1)

#plot fig2
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
axes_lst.append(ax2)

for ax in axes_lst:
    ax.plot(x, y)

plt.show()

または、このサポートされていない機能を使用して、pyplot のすべての図を取得できます。https://stackoverflow.com/a/3783303/1269969から取得

figures=[manager.canvas.figure
         for manager in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
for figure in figures:
    figure.gca().plot(x,y)
于 2013-02-15T19:50:36.840 に答える
1

matplotlib について知らなくても、すべての軸 (?) をリストに追加できます。

to_plot = []
to_plot.append(ax1)
...
to_plot.append(ax2)
...

# apply the same action to each ax
for ax in to_plot: 
    ax.plot(x, y)

その後、好きなだけ追加でき、それぞれに同じことが起こります。

于 2013-02-15T19:50:46.990 に答える