灵感来自这个问题在ask.sagemath,什么是最好的添加箭头所产生的曲线结束的方式Plot
,ContourPlot
等等...?这些是高中看到的情节类型,表明曲线在页面末尾继续.
经过一些搜索,我找不到内置方式或最新的包来做到这一点.(有ArrowExtended,但它已经很老了).
ask.sagemath问题中给出的解决方案依赖于函数及其端点的知识以及(可能)获取衍生物的能力.它翻译成Mathematica是
f[x_] := Cos[12 x^2]; xmin = -1; xmax = 1; small = .01;
Plot[f[x],{x,xmin,xmax}, PlotLabel -> y==f[x], AxesLabel->{x,y},
Epilog->{Blue,
Arrow[{{xmin,f[xmin]},{xmin-small,f[xmin-small]}}],
Arrow[{{xmax,f[xmax]},{xmax+small,f[xmax+small]}}]
}]
Run Code Online (Sandbox Code Playgroud)
一种替代的方法是简单地更换Line[]
对象生成由Plot[]
用Arrow[]
.例如
Plot[{x^2, Sin[10 x], UnitStep[x]}, {x, -1, 1},
PlotStyle -> {Red, Green, {Thick, Blue}},
(*AxesStyle -> Arrowheads[.03],*) PlotRange -> All] /.
Line[x__] :> Sequence[Arrowheads[{-.04, .04}], Arrow[x]]
Run Code Online (Sandbox Code Playgroud)
但这有一个问题,就是线条中的任何不连续都会产生你不想要它们的箭头(这通常可以通过选项修复Exclusions -> None
).更重要的是,这种方法与CountourPlot
s 无望.试试吧
ContourPlot[x^2 + y^3 == 1, …
Run Code Online (Sandbox Code Playgroud) 昨天,同时加入一些时间地块的"从每个列表最理想选择一个元素"的问题,我再一次想起了mathgroup发布我几年前做的("再生一个情节后保持情节注释").
当我认为某些轴标签会很好时,我很高兴地(手动)注释我的情节.问题是,使用轴标签重新生成图将会破坏您的手动注释.
看起来您可以在名为pic的图中找到用户添加内容:Rest[pic[[1, 1]]]
,因此,如果您将图重新生成为pic2,则可以使用以下内容获取注释:
Insert[pic2, Rest[pic[[1, 1]]], {1, 1}]
Run Code Online (Sandbox Code Playgroud)
我记得David Park(演示文稿包的作者)强烈反对手动注释.我自己做了一些程序化标签,但有时候在程序控制下放置标签太难了,就像这里一样(注意我不太喜欢PlotLegends
,特别是因为有些颜色彼此接近):
扔掉原点的原因已经太晚了,但我不知道目前对这个问题的看法是什么.
BTW我的数学组发布中的技巧与上面显示的技巧略有不同,并且在前10个图中使用.但原则是一样的.
编辑
我将代码放置在Mathematica Toolbag中制作如上所示的SO数据图.
编辑
现在代码被Brett Champion转移到更合适的问题:如何从Mathematica访问StackOverflow API