Я хотел бы нарисовать стрелку, указывающую градиент функции в точке, указав в направлении касание к функции. Я хотел бы, чтобы длина длины этой стрелки была пропорциональна размеру оси, чтобы она была видна при любом уровне масштабирования.Направление стрелки, заданное данными, но длина, установленная размером фигуры
Скажем, мы хотим нарисовать производную от x^2
по номеру x=1
(производная составляет 2
). Вот две вещи, которые я пробовал:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 2, 1000)
y = x**2
ax.plot(x, y)
x, y = (1.0, 1.0)
grad = 2.0
# Fixed size, wrong direction
len_pts = 40
end_xy = (len_pts, len_pts*grad)
ax.annotate("", xy=(x, y), xycoords='data',
xytext=end_xy, textcoords='offset points',
arrowprops=dict(arrowstyle='<-', connectionstyle="arc3"))
# Fixed direction, wrong size
len_units = 0.2
end_xy = (x+len_units, y+len_units*grad)
ax.annotate("", xy=(x, y), xycoords='data',
xytext=end_xy, textcoords='data',
arrowprops=dict(arrowstyle='<-', connectionstyle="arc3"))
ax.axis((0,2,0,2))
plt.show()
Вот как они выглядят на двух уровнях масштабирования. Чтобы было ясно, Я хочу длину красной линии в направлении и черной линии в:
отлично работает. – supergra