如何分别标记每一行:
Plot[{{5 + 2 x}, {6 + x}}, {x, 0, 10}]
答案 0 :(得分:34)
有一些很好的代码可以让您在an answer到How to annotate multiple datasets in ListPlots中动态执行此操作。
中还定义了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}]]
事实上,你可以使用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]};
答案 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]
然而,让我也注意到我不喜欢这个软件包,主要是因为它非常违反直觉,装载了太多选项,并且不像大多数Mathematica的功能那样提供开箱即用的干净体验。你会有一些摆弄选项来获得你想要的东西。但是,在您想要传奇的图表和图表中,这可能很方便。另请参阅对this answer和this question的评论。