Как я могу изменить свой график, чтобы каждый график был другого цвета? - PullRequest
1 голос
/ 03 мая 2019

Меня смущает, как я могу изменить цвета графиков на графиках, каждая строка представляет аппроксимацию Эйлера с другим значением h.

import numpy as np
import matplotlib.pylab as plt

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

#defining dP/dt as a function f(P)
    f = lambda P: r*P*(1-P/K)

    P = np.array([])
    P = np.append(P,Po) #initializing P with Po

    for n in range(N+1):
        Pn = P[n] + h*f(P[n])
        P = np.append(P,Pn)





# 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() 

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Вам просто нужно взять вызов ax.plot вне цикла for и просто построить P без n, не добавляя красный цвет с флагом 'r', вот так:

for n in range(N+1):
    Pn = P[n] + h*f(P[n])
    P = np.append(P,Pn)

ax.plot(P, 'o')

В исходном коде каждая точка отображается независимо. В этом нет необходимости, поскольку matplotlib может напрямую построить вектор или список в этом отношении. Таким образом, вы можете просто заполнить P, а затем построить его без X-данных.

Опции 'ro' означают:

  • Нарисуйте красные маркеры (r)
  • Использовать круглые маркеры (o)

Если вы удалите опцию цвета и просто передадите o, matplotlib позаботится о том, чтобы нарисовать каждую функцию в отдельном цвете.

1 голос
/ 03 мая 2019

Хотя @Right leg уже указал на проблему, вам может быть интересно узнать, как получить легенды.

import numpy as np
import matplotlib.pylab as plt

# your function
def Eulergraph(h, N, ax):
    K = 12; r = 0.43; Po = 1;
    f = lambda P: r*P*(1-P/K)
    P = np.array([Po]) # Modified this line

    for n in range(N+1):
        Pn = P[n] + h*f(P[n])
        P = np.append(P,Pn)
    ax.plot (P, '-', label='h=%s' %h) # Added legend here

# 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.legend() # Show the legend 
plt.show() 

enter image description here

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