как мне поставить все мои графики на одной плоскости - PullRequest
0 голосов
/ 02 мая 2019

Моя программа использует метод Эйлера для построения эскиза графика ? (?) и аппроксимаций ?ℎ (??) с ℎ = 1,0.5,0.1 для временного интервала [0,30] на той же плоскости. Тем не менее, я новичок в Python и не знаю, как поместить все графики в одну плоскость.

import numpy as np
import matplotlib.pylab as plt

def Eulergraph(h,N):
    K = 12; r = 0.43; Po = 1;

Вместо трех графиков мне нужны все графики в одной плоскости.

1 Ответ

0 голосов
/ 02 мая 2019

Вы можете передать объект оси (называемый ax ниже) в функцию Eulergraph, а затем просто вызвать plt.show один раз:

import numpy as np
import matplotlib.pylab as plt

# your function
def Eulergraph(h, N, ax):
    ...

    for n in range(N+1):
        Pn = P[n] + h*f(P[n])
        P = np.append(P,Pn)
        # Note the change here
        ax.plot ( n, P[n] , ' ro' )

# create your figure and axis object
fig = plt.figure()
ax = plt.gca()

# pass the axis object as a parameter
Eulergraph(1,30,ax)       
Eulergraph(.5,30,ax)   
Eulergraph(.1,30,ax)

# formatting of your plot
plt.xlabel (' Value of n ”' )
plt.ylabel (" Value of p[n] ”")
plt.title (" Approximate Solution with Euler’s Method " )
plt.show()   

Обратите внимание, что вы также можете не вызывать plt.show() в вашей функции, и это будет иметь желаемый эффект. Однако я бы рекомендовал написать функцию для принятия аргумента оси, поскольку на более позднем этапе вы можете выбрать разделение графиков на разные графики.


Из документов для plt.show :

Показать фигуру. При работе в ipython с режимом pylab отобразите все цифры и вернитесь к приглашению ipython.

Итак, маленький пример показывает, что вы можете нарисовать две линии на одном рисунке:

exp1.py:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y1 = np.arange(10)*2-1
y2 = np.arange(10)*1+1

plt.plot(x,y1)
plt.plot(x,y2)
plt.show()

Запуск exp1.py дает желаемый эффект одной фигуры с обеими линиями: enter image description here

Однако, если дважды изменить скрипт на вызов plt.show, то получится два отдельных графика, например,

plt.plot(x,y1)
plt.show()
plt.plot(x,y2)
plt.show()

Функция plt.show() отображает фигуру (со всеми графиками, определенными к этому моменту времени), и последующие графики будут создавать новые фигуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...