Просто добавьте plt.arrow()
:
from matplotlib import pyplot as plt
import numpy as np
# your function
def f(t): return np.sin(t)
t = np.linspace(-2, 2, 100)
plt.plot(t, f(t))
plt.arrow(0, f(0), 0.01, f(0.01)-f(0), shape='full', lw=0, length_includes_head=True, head_width=.05)
plt.show()
EDIT: Изменены параметры стрелки, чтобы включить положение & amp; направление функции для рисования.
Нет... часть точки пространства имен должна предотвратить коллизии имени на обновлении.
, Если Вы добавляете вещи к пространству имен станд., тогда Ваш код мог бы порвать со следующим выпуском библиотеки, если они решают добавить что-то с тем же именем.
Только специализации позволяются. Так, например, Вам разрешают специализироваться std::numeric_limits
для Вашего типа. И это, конечно, должно произойти в пространстве имен std::
. Но Ваше определение типа не является специализацией, таким образом, это вызывает неопределенное поведение.
Необходимо использовать собственное пространство имен в качестве добавляющий, что код к стандартной библиотеке только смутит пользователей, которые будут онлайн искать информацию о том дополнении.
Все, что находится в станд., должно быть только стандартной библиотекой и ничем иным.
Официально, в стандарте говорится, что это - "неопределенное поведение", и все виды противных вещей могут произойти.
На практике, это будет хорошо работать, но Вы все еще не должны делать этого. Что это покупает Вас кроме запутывающих людей, которых чему-то предоставляет компилятор?
Я полностью соглашаюсь с другими ответами, говоря, что необходимо поместить типы в собственное пространство имен для предотвращения неудачных коллизий имени.
Однако я хотел к точному, что иногда , Вы можете (и если!) добавляет материал в пространстве имен станд. Дело обстоит так для шаблонных специализаций станд.:: метод подкачки, например, которые используются для обеспечения универсального способа подкачать объекты. Для получения дополнительной информации об этом вопросе можно читать о идиома подкачки неброска .