Как в matplotlib работать с тригонометрическими функциями, полученными из строки?

Код является фрагментом математической решалки, пишется just for lulz. Работает в случае, если в строке записана функция, не затрагивающая тригонометрию, логарифмы, экспоненты и тд. Но при попытке построить график функции f(x)=sin(x), например, выдаётся ошибка: TypeError: only length-1 arrays can be converted to Python scalars. Кто-нибудь с этим сталкивался?
import numpy as np
import matplotlib.pyplot as plt
from Tkinter import *
from math import sin
window=Tk()
window.geometry('400x300')
function=Entry(window)
function.pack()
def plot(event):
    a=str(function.get())
    x=np.arange(0,10,0.1)
    y=eval(a)
    plt.plot(x,y)
    plt.show()
but=Button(window)
but.pack()
but.bind('<Button-1>',plot)
window.mainloop()
  • Вопрос задан
  • 4271 просмотр
Решения вопроса 1
tsarevfs
@tsarevfs
C++ developer
Когда на вход подается синус у вас происходит следующее:
x = np.arange(0,10,0.1)
y = sin(x)


sin из модуля math не ожидает что ему дадут вектор, о чем и сообщает этой ошибкой.
В numpy есть своя реализация sin, cos, ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы