Как применить опцию к нескольким фигурам одновременно - PullRequest
0 голосов
/ 03 октября 2018

Если я сделаю это

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, опция применяется к обеим фигурам, а не только к одной из двух.

1 Ответ

0 голосов
/ 03 октября 2018

При использовании 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...