Это выглядит так, как будто оно довольно близко к ответу, который я ищу, но не совсем там. Возможно, я не следую принципам «аккуратных данных», и мне нужно будет сделать оценку данных во многих точках для построения этих функций, но я не решаюсь принять это как ответ.
Вот код для построения график, который у меня есть.
call_value_per_unit = lambda s_t1,X: max(0, s_t1-X)
put_value_per_unit = lambda s_t1, X: max(0, X-s_t1)
put_call_value = lambda s_t1, X: put_value_per_unit(s_t1, X) + call_value_per_unit(s_t1, X)
independent_variable = "Stock Price"
dependent_variable = "Asset Price"
g = ggplot(pd.DataFrame({independent_variable:[10,20]}), aes(x=independent_variable)) \
+ stat_function(fun=put_value_per_unit, args=[15], color="red") \
+ stat_function(fun=call_value_per_unit, args=[15], color="blue") \
+ stat_function(fun=put_call_value, args=[15], color="black") \
+ ylab(dependent_variable) \
+ ggtitle(" ".join([independent_variable , "vs", dependent_variable]))
_ = g.draw()
Но легенды нет ... И я бы хотел, чтобы она была.
(Хотя я в python, пользователи R будут скорее всего есть хорошие предложения)