как использовать номер объекта рисунка pyplot? - PullRequest
0 голосов
/ 05 апреля 2019

Я действительно не понимаю, как использовать число объектов рисунка в pyplot.

Допустим, я сделал два графика с двумя числами (1, 2) с помощью plt.figure ().

plt.figure(1, figsize=(10,4))    
plt.subplot(1, 3, 1)    
plt.bar(category, values)    
plt.subplot(1, 3, 2)    
plt.scatter(category, values)    
plt.subplot(1, 3, 3)    
plt.plot(category, values)    
plt.suptitle('multiple plotting')
plt.show()
plt.figure(2, figsize=(10,5))    
plt.subplot(3, 1, 1)    
plt.bar(category, values)    
plt.subplot(3, 1, 2)    
plt.scatter(category, values)    
plt.subplot(3, 1, 3)    
plt.plot(category, values)    
plt.suptitle('multiple plotting')
plt.show()

Тогда ... Что мне делать, если я хочу снова построить график на фигуре 1?

Я думаю, что могу понять, как установить число фигуры,Но на самом деле не понимаю, когда я могу это использовать и как использовать.

Спасибо за объяснение заранее!

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019

После вызова plt.show() вы не сможете снова нанести на эти цифры (если вы не участвуете в каком-либо интерактивном сеансе (?)). Итак, давайте предположим, что вы не звонили plt.show(). В этом случае вы можете активировать первую цифру на figure(1).

plt.figure(1, figsize=(10,4))    
plt.plot(...)

plt.figure(2, figsize=(10,5))    
plt.plot(...)

plt.figure(1)
plt.plot(...)  # <--- This plots to figure 1 again.

plt.show()
0 голосов
/ 05 апреля 2019

Просто просмотрев официальную документацию pyplot.figure, вы можете создать экземпляр Figure, а именно:

Контейнер верхнего уровня для всех элементов графика.

Итак, простой способ повторного использования экземпляра фигуры:

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return np.exp(-t) * np.cos(2*np.pi*t)
def g(t):
    return np.sin(t) * np.cos(1/(t+0.1))

t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)

fig = plt.figure(1, figsize=(10,4))
fig.suptitle('First figure instance')


plt.figure(2, figsize=(10,5))
plt.subplot(1, 2, 1)
plt.bar(t1, f(t1))
plt.subplot(1, 2, 2)
plt.scatter(t2, g(t2))
plt.suptitle('second plot')
plt.show()

sub1 = fig.add_subplot(221)
sub1.plot(t1, g(t1))
sub2 = fig.add_subplot(224)
sub2.plot(t2, f(t2))
fig.savefig("first_figure.png", dpi=200)
0 голосов
/ 05 апреля 2019

В вашем случае я бы сохранил маркеры для участков (см. Пример ниже).Таким образом, вы можете снова обратиться к любому подзаговору позже: handle.plot(...)

import numpy as np
import matplotlib.pyplot as plt

plt.figure(1, figsize=(10,4))
ax1 = plt.subplot(1, 3, 1)
ax1.plot(np.random.rand(3,2))
ax2 = plt.subplot(1, 3, 2)
ax2.plot(np.random.rand(3,2))
ax3 = plt.subplot(1, 3, 3)
ax3.plot(np.random.rand(3,2))
plt.suptitle('multiple plotting')

ax1.plot(np.random.rand(3,2)) # Plot in first subplot again
ax2.plot(np.random.rand(3,2)) # Plot in second subplot again
plt.show()

Если вы хотите использовать числа для адресации ваших подзаговоров, вы можете сделать следующее:

fig,ax = plt.subplots(nrows=1,ncols=3,figsize=(10,4))
ax[0].plot(np.random.rand(3,2))
ax[1].plot(np.random.rand(3,2))
ax[2].plot(np.random.rand(3,2))
plt.suptitle('multiple plotting')

ax[0].plot(np.random.rand(3,2))
ax[1].plot(np.random.rand(3,2))
plt.show()

Надеждаэто помогло!

...