当我绘制exp,2 ^ x,3 ^ x等多个函数时,是否可以生成每个函数的标签?
我的代码现在:
Plot[{Exp[x], 2^x, 3^x}, {x, -5, 2}, AspectRatio -> Automatic, PlotStyle -> {Red, Green, Blue}]
我的意思是在这种情况下生成3个标签,告诉用户它是什么功能。
如:
你如何产生这个?
答案 0 :(得分:4)
我不确定为同一个问题添加另一个不同答案的规则是什么。但这是另一种不同的方式。如果我应该将其添加到我的第一个答案中,我可以这样做。
您可以使用文本命令手动添加文本标签。我觉得它看起来更好。这是一种方式:
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
]
更新(1)
Sam在下面问了一个更简单的方法。我现在不确定。但是,使这种方法更容易使用的一种方法是创建一个函数,然后简单地调用此函数一次以生成文本标签。您可以将此功能放在您放置所有其他功能的位置,然后调用它。
这是:首先编写函数
(*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]]
以下是一些例子:
您可以根据需要进行修改。
答案 1 :(得分:4)
也许这样做有效:在Tooltip
中使用Plot
生成带有工具提示的Graphics
对象。然后重写工具提示,将所需文本放在所需位置:
Plot[
Tooltip@{Exp[x], 2^x, 3^x}, {x, -5, 2},
AspectRatio -> Automatic,
PlotStyle -> {Red, Green, Blue},
PlotRange -> All,
PlotRangePadding -> 1.1] /.
{
Tooltip[{_, color_, line_}, tip_]
:>
{Text[Style[tip, 14], {.25, 0} + line[[1, -1]]], color, line}
}
答案 2 :(得分:3)
当鼠标指针位于功能图时,Tooltip
显示标签的替代方式:
Plot[Tooltip@{Exp[x], 2^x, 3^x}, {x, -5, 2}, AspectRatio -> Automatic,
PlotStyle -> {Red, Green, Blue}]
答案 3 :(得分:1)
一种方法是使用PlotLegends
(我不太喜欢它,但它是一种简单的方法来做你想要的事情)
<< PlotLegends`
Clear[x];
funs = {Exp[x], 2^x, 3^x};
legends = Map[Text@Style[#, "TR", 12] &, funs];
Plot[Evaluate@funs, {x, -5, 2}, AspectRatio -> Automatic,
PlotStyle -> {Red, Green, Blue}, PlotLegend -> legends]
请参阅帮助以更多地自定义图例。以上使用默认值。
http://reference.wolfram.com/mathematica/PlotLegends/tutorial/PlotLegends.html