Я не уверен, каковы правила добавления другого, другого ответа на тот же вопрос.Но вот другой, другой способ сделать это.Если я должен добавить это в свой первый ответ, я могу это сделать.
Вы можете добавить текстовые метки вручную, используя текстовые команды.Я думаю, что это выглядит лучше.Вот один из способов:
Clear[x];
funs = {Exp[x], 2^x, 3^x};
funNames = Style[#, 12] & /@ funs;
(*the x-axis plot range used *)
from = -5; to = 2;
(* generate the coordinates at the end of the plot lines*)
pos = Map[{to, #} &, funs /. x -> to];
(*generate the text labels *)
text = Map[Text[#[[1]], #[[2]], {-1, 0}] &, Thread[{funNames, pos}]];
Построить окончательный результат (добавлен небольшой отступ для диапазона графика, чтобы добавленные метки были видны полностью)
Plot[funs, {x, from, to},
PlotRangePadding -> {1, 1},
PlotStyle -> {Red, Green, Blue},
PlotRange -> All,
Epilog -> text
]
update (1)
Сэм спросил ниже о более простом способе.Я не уверен сейчас.Но один из способов облегчить использование этого метода - создать функцию, а затем просто вызвать эту функцию один раз, чтобы сгенерировать текстовые метки.Вы можете поместить эту функцию туда, где вы помещаете все свои другие функции, которые используете постоянно, и просто вызывать ее.
Вот что-то: сначала напишите функцию
(*version 1.1*)
myLegend[funs_List, (*list of functions to plot*)
x_, (*the independent variable*)
from_?(NumericQ[#] && Im[#] == 0 &),(*the x-axis starting plot range*)
to_?(NumericQ[#] && Im[#] == 0 &) (*the x-axis ending plot range*)
] := Module[{funNames, pos, text, labelOffset = -1.3},
(*make label names*)
funNames = Style[#, 12] & /@ funs;
(*generated the coordinates at the end of the plot lines*)
pos = Map[{to, #} &, funs /. x -> to];
(*generate the Text calls*)
text = Map[Text[#[[1]], #[[2]], {labelOffset, 0}] &,
Thread[{funNames, pos}]]
];
А теперь просто вызывайте вышеупомянутое в любое время, когда вы хотите построить график с метками.Это будет всего лишь 1-2 лишние строки кода.вот так:
Clear[x]
from = -5; to = 2;
funs = {Exp[x], 2^x, 3^x};
Plot[funs, {x, from, to}, PlotRangePadding -> {1, 1},
PlotStyle -> {Red, Green, Blue}, PlotRange -> All,
Epilog -> myLegend[funs, x, from, to]]
Вот несколько примеров:
Вы можете изменить его, как хотите.