当我在Mathematica中绘制一个函数时,它是否有可能自动将它的等式(即y = 2x)或其他文本放在它附近?
乍一看,我找不到任何选择,但如果有一个我想知道。
由于
答案 0 :(得分:4)
执行此操作的一种方法是使用PlotLegends
标准附加软件包自动将表达式与用于绘制它的样式相关联。默认情况下输出看起来不太好;我建议设置LegendShadow -> None
选项并在图例中使用Style
表达,以使它们看起来更好。此外,加载包会对Plot
和相关函数造成一些有趣的重新定义,如果你不小心,可能会破坏其他一些东西。
答案 1 :(得分:4)
使用Mathematica 6或更高版本,我经常使用工具提示来帮助我识别情节曲线:
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也许:))
答案 2 :(得分:2)
“接近它的等式”是问题所在。这不是一个容易解决的问题,当您开始使用重叠的图表等“繁忙”的图表时,它变得有些不可能。
我没有一个很好的例子可以显示,但通常我会定义一个“标记函数”,它与绘制的函数采用相同的输入,它在图形上放置一个点并在附近写入一些文本。这样做的好处是能够轻松改变文本的位置,但仍然将其与功能联系起来。