3

是否有可能当我在 Mathematica 中绘制一个函数时,它会自动靠近它的方程(即 y = 2x)甚至其他一些文本?

乍一看我没有找到任何选择,但如果有一个我想知道。

谢谢

4

3 回答 3

4

一种自动将表达式与用于绘制它的样式相关联的方法是使用PlotLegends标准的附加包。默认情况下,输出看起来不太好;我建议设置LegendShadow -> None选项并使用Style您粘贴在图例中的表达式以使它们看起来更好。此外,加载包会对Plot相关功能造成一些有趣的重新定义,如果您不小心,可能会破坏其他一些东西。

于 2009-11-16T13:58:28.720 回答
4

使用 Mathematica 6 或更高版本,我经常使用Tooltip来帮助我识别绘图曲线:

Plot[Tooltip[Sin[x]], {x, 0, 8 Pi}]

唉,这仅在交互式使用图形时有用,因为您必须将鼠标光标悬停在曲线上。它在纸上或静态图像上效果不佳。

您可以使用Epilog选项在绘图上手动放置一些文本,如下例所示:

Plot[
  Sin[x], {x, 0, 8 Pi},
  Epilog -> Text["My Text", Offset[{32, 0}, {14, Sin[14]}]]
]

调整Offset的参数以适应口味。

如果您不介意手动放置,则此方法有效。自动放置会带来一些挑战,具体取决于您希望绘制的函数类型。但是,如果您了解感兴趣的函数的一般特征,则可以编写一个函数来计算Offset参数的漂亮值。例如,如果我知道我要绘制许多指数下降函数,我可能会在这个例子中定义类似函数myPlot的东西:

SetAttributes[myPlot, HoldAll]
myPlot[function_, {var_, min_, max_}] :=
  Plot[
    function, {var, min, max},
    Epilog -> Text[function, Offset[{40, 0}, {var, function} /. var -> min + (max - min)/20]],
    PlotRange -> All, AxesOrigin -> {0, 0}
  ]

... 其中Offset的参数是使用一些任意常数自动计算的,这些常数对这些类型的图工作得相当好:

Manipulate[
  myPlot[1000 E^(-d t), {t, 0, 100}, "My Label"],
  {d, 0.01, .2}
]

由于所有这些选项都是可编程的,因此您可以为标签放置编码的复杂程度是无限的。当然,这样的编程离Plot内置选项的理想越来越远,它只是神奇地落在函数旁边的一些文本上。Mathematica 8 或 9 可能:)

于 2009-11-18T06:09:51.997 回答
2

“接近它的方程”是问题所在。这不是一个容易解决的问题,当您开始获得带有重叠图等的“忙碌”图时,它变得有些不可能。

我没有一个很好的例子来展示,但通常我会定义一个“标签函数”,它采用与正在绘制的函数相同的输入,它在图形上放置一个点并在附近写入一些文本。这样做的好处是能够轻松更改文本的位置,但仍将其与功能相关联。

于 2009-11-16T09:30:22.693 回答