Составьте несколько функций, используя разные цвета, включая производную - PullRequest
0 голосов
/ 29 августа 2018

У меня действительно простая проблема с моей программой на Python, которая еще не закончена. Сейчас он делает все, что я хочу, но не так, как я хочу.

plot

Есть три вещи, которые я пытался изменить:

  1. все функции отображаются с использованием одного и того же цвета, и я хотел бы, чтобы программа автоматически переключалась на новый цвет при добавлении новой функции на график (это будет больше 2, все на одном графике) ,
  2. f (x) диапазон 140. Как я могу уменьшить это? Возможно до 20/40.
  3. (самое главное) Мой код не очень эффективен. f1 и derivative вообще не связаны. Я объявляю модель функции в f1, но мне нужно снова все настроить в derivative. Каждый раз, когда я пытаюсь поступить иначе, у меня возникают проблемы с функцией main. В конечном итоге я добавлю больше функций, таких как интеграция и еще много чего, и если я буду декларировать все с нуля каждый раз, когда захочу что-то сделать с f1, программа как бы потеряет свою цель.

Должен ли я использовать x = Symbol('x') inside f1?

import numpy as np
import matplotlib.pyplot as plt
from sympy import *

x = Symbol('x')

def f1(a, b, c, d):
    y = a*x**3 + b*x**2 + x*c + d
    return y
    ###yprime = y.diff(x) 
    ###return yprime

def derivative(a, b, c, d):
    y = a*x**3 + b*x**2 + x*c + d
    yprime = y.diff(x)
    return yprime

def factorail(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

###colors = iter(cm.rainbow(np.linspace(0, 1, len(ys))))
###for y in ys:
    ###plt.scatter(x, y, color=next(colors))
def main():
    ###colors = itertools.cycle(["r", "b", "g"])
    y = f1(0,1,2,1)
    yp = derivative(0,1,2,1)
    print(y)
    plot(y, yp)
    plot(yp)
    plt.show()


if __name__ == '__main__':
    main()

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вертикальное окно задается параметром ylim. Я рекомендую также использовать некоторые явные ограничения для x, по умолчанию от -10 до 10 не обязательно лучше для вас. И я рекомендую прочитать страницу с графиками SymPy .

Цвет устанавливается с помощью опции line_color. Разные цвета требуют разных вызовов на plot, но их можно комбинировать. Пример:

p = plot(y, (x, -5, 5), ylim=(-20, 20), line_color='b', show=False)
p.extend(plot(yp, (x, -5, 5), ylim=(-20, 20), line_color='r', show=False))
p.show()

результат в

combined

Повторное использование функции легко:

def derivative(a, b, c, d):
    y = f1(a, b, c, d)
    yprime = y.diff(x)
    return yprime

В сторону: что произойдет, если мы попробуем line_color=['b', 'r'], как в plot(y, yp, ylim=(-20, 20), line_color=['b', 'r'])? Случаются забавные вещи:

funny

0 голосов
/ 29 августа 2018

Я использую следующую функцию, чтобы получить цвета, которые «далеки» друг от друга в общем смысле. 2396745 довольно произвольно и определяет, насколько далеко находятся цвета. Это, кажется, дает мне хорошие результаты.

def cmap_ints(i):
    return "#"+hex(((int(i)+1)*2396745)%(256**3))[2:].rjust(6,"0")

Использование:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0,1,100)
y1 = 3*x + 4
y2 = 2*x - 5
plt.plot(x,y1,c=cmap_ints(1))
plt.plot(x,y2,c=cmap_ints(2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...