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

时间:2011-08-28 13:39:44

标签: wolfram-mathematica plot label

如何分别标记每一行:

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

enter image description here

3 个答案:

答案 0 :(得分:34)

有一些很好的代码可以让您在an answerHow to annotate multiple datasets in ListPlots中动态执行此操作。

技术说明Labeling Curves in Plots

中还定义了LabelPlot命令

当然,如果你没有太多的图像要做, 那么使用Epilog手动添加标签并不困难,例如

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}]]

outputa

事实上,你可以使用Locators做类似的事情,让你可以在任何地方移动标签:

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]};

four functions

答案 1 :(得分:10)

Mathematica 9现在提供了简单的方法来包含传说。

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

答案 2 :(得分:6)

您可以通过加载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]

enter image description here


然而,让我也注意到我不喜欢这个软件包,主要是因为它非常违反直觉,装载了太多选项,并且不像大多数Mathematica的功能那样提供开箱即用的干净体验。你会有一些摆弄选项来获得你想要的东西。但是,在您想要传奇的图表和图表中,这可能很方便。另请参阅对this answerthis question的评论。