Wolfram mathematica 如何在Mathematica中标记不同的曲线?

Wolfram mathematica 如何在Mathematica中标记不同的曲线?,wolfram-mathematica,plot,label,Wolfram Mathematica,Plot,Label,如何分别标记这些行中的每一行: Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}] 有一些很好的代码,允许您在中动态地执行此操作 技术说明中还定义了一个LabelPlot命令 当然,如果你没有太多的图像要制作, 例如,在using中手动添加标签并不困难 fns[x_] := {5 + 2 x, 6 + x}; len := Length[fns[x]]; Plot[Evaluate[fns[x]], {x, 0, 10}, Epilog -> Table

如何分别标记这些行中的每一行:

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]

有一些很好的代码,允许您在中动态地执行此操作

技术说明中还定义了一个
LabelPlot
命令

当然,如果你没有太多的图像要制作, 例如,在using中手动添加标签并不困难

fns[x_] := {5 + 2 x, 6 + x}; 
len := Length[fns[x]];

Plot[Evaluate[fns[x]], {x, 0, 10}, 
 Epilog -> Table[Inset[
    Framed[DisplayForm[fns[x][[i]]], RoundingRadius -> 5], 
    {5, fns[5][[i]]}, Background -> White], {i, len}]]

事实上,您可以使用
定位器执行类似操作,允许您将标签移动到任意位置:

DynamicModule[{pos = Table[{1, fns[1][[i]]}, {i, len}]},
 LocatorPane[Dynamic[pos], Plot[Evaluate[fns[x]], {x, 0, 10}],
  Appearance -> Table[Framed[Text@TraditionalForm[fns[x][[i]]], 
                  RoundingRadius -> 5, Background -> White], {i, len}]]]
在上面的例子中,我让定位器采用标签的形式,尽管也可以像上面那样保留一个
Epilog
,并且有不可见的定位器来控制位置。 定位器也可以约束(使用
Dynamic
的第二个参数)到适当的曲线。。。但这并不是真的必要

作为上述代码的示例,使用手动移动标签的函数:

fns[x_] := {Log[x], Exp[x], Sin[x], Cos[x]};

您可以通过加载
PlotLegends
软件包在绘图中插入图例

<<PlotLegends`;
Plot[{5+2 x,6+x},{x,0,10},
    PlotLegend->{"5+2x","6+x"},LegendShadow->None,
    LegendPosition->{0.3,-0.5},LegendSpacing->-0,LegendSize->0.5]
None,
LegendPosition->{0.3,-0.5},LegendSpacing->-0,LegendSize->0.5]



然而,让我也注意到我不喜欢这个软件包,主要是因为它非常违反直觉,有太多的选项,不能像Mathematica的大多数函数那样提供开箱即用的干净体验。为了得到你想要的东西,你需要在选项上做些手脚。但是,在需要图例的绘图和图表中,这可能很方便。另请参见和的注释。

Mathematica 9现在提供了包含图例的简单方法

Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}, PlotLegends -> "Expressions"]

可能重复:PlotLegends包不是最佳的。西蒙:我知道。。。我的答案还有第二部分,我在5分钟前删除了它,因为我不想做出任何判断。下面是它所说的:“然而,让我也注意到我不喜欢这个软件包,主要是因为它非常违反直觉,有太多的选项,不能像Mathematica的大多数函数那样提供开箱即用的干净体验。为了得到你想要的东西,你需要在选项上做些手脚。然而,在你确实想要图例的绘图和图表中,这可能很方便。“在你阅读我的回答后,我会删除这个答案。但是,一定要添加上面的两个链接作为对问题的评论(同时也要注意它有缺陷)。也许他想要的只是一个图例,人们有办法使请求复杂化。把答案留在这里!有标准答案并讨论其优缺点是很好的。因为
PlotLegends
是低于标准的,我以前使用
LevelScheme
的能级图部分来创建图例。它不是自动生成的它可能不需要将定位器约束到行,但是这样做非常酷。尝试将
Dynamic
表达式更改为
Dynamic[pos,(pos=MapIndexed[{x,y},{i}:>{x,fns[x][[i]}&]
@frorach:你正是我把这个练习留给你的那种感兴趣的读者!你的代码运行得很好。@Simon,非常感谢,看起来很棒。