首页 > 解决方案 > 如何同时对多个图形应用选项

问题描述

如果我这样做

import numpy as np
import matplotlib.pyplot as plt
a=[1,2,3]
b=[3,4,5]

plt.figure(1)
plt.xlim(0,3)
plt.plot(b)
plt.figure(2)
plt.plot(a)
plt.show()

x 轴的选择将仅应用于图 1。我可以使用什么来区分我希望仅对图 1 或 2 有效的选项和我想应用于两个图的选项?

澄清:我知道可以plt.xlim多次调用。我宁愿寻找某种形式的命令,例如

plt.apply_options_to(1,2)

从那一刻起,每次我打电话时plt.xlim,该选项都适用于两个数字,而不仅仅是两个数字之一。

标签: pythonmatplotlib

解决方案


使用 pyplot,每个命令都适用于当前活动的图形或轴。这意味着您可以轻松地遍历数字并应用每个命令,例如

for i in (1,2):
    plt.figure(i)
    plt.xlim(0,3)

现在这些是三行代码。如果要求是使用单行代码,以下将是一个解决方案

[plt.setp(plt.figure(i).axes[0], xlim=(0,3)) for i in plt.get_fignums() if i in (1,2)] 

这既不优雅也不易于键入,因此在使用 pyplot 时,我会推荐第一个解决方案。

但总的来说,我建议使用面向对象的方法,其中创建两个图形如下所示:

import matplotlib.pyplot as plt
a=[1,2,3]
b=[3,4,5]

fig, ax = plt.subplots()
ax.plot(b)
fig2, ax2 = plt.subplots()
ax2.plot(a)

plt.show()

那么单线方案也紧凑一点

plt.setp([ax,ax2], xlim=(0,3))

推荐阅读