在Mathematica中,如何在给定数字处绘制水平线?如何在给定数字处绘制垂直线?
如果您正在使用 Plot(或ListPlot等),最简单的解决方案是使用GridLines选项,该选项允许您指定要绘制线条的x和y值。例如:
Plot[Sin[x], {x, 0, 2 \[Pi]},
GridLines -> {{0, \[Pi]/2, \[Pi], 3 \[Pi]/2, 2 \[Pi]},
{-1, -Sqrt[3]/2, -1/2, 0, 1/2, Sqrt[3]/2, 1}}]
编辑以添加:
当然,如果您只想在给定的单个数字处绘制一条线,则此解决方案有效。例如,如果您想要重现dreeve的回答中的第二个示例:
Plot[Sin[x], {x, 0, 2 Pi},
GridLines -> {{4}, {}}]
当使用Plot
绘制水平线时,最简单的技巧是添加额外的常数函数:
Plot[{Sin[x], .75}, {x, 0, 2Pi}]
对于垂直线,Plot
和 ListPlot
都有 Epilog
选项:
Plot[Sin[x], {x, 0, 2Pi}, Epilog->Line[{{4,-100}, {4,100}}]]
但可能最好的是Pillsy答案中提供的GridLines
选项。
一种方法是将Line
图形原语添加到您的图形中:
p1 = Plot[Sin[x], {x, -2*Pi,2*Pi}];
l1 = Graphics@Line[{{-2Pi,.75},{2Pi,.75}}]; (* horizontal line at y==.75 *)
Show[p1,l1]
另一种方法是调整GridLines
。
Plot[
1/(15*E^((x - 100)^2/450)*Sqrt[2*Pi]),
{x, 55, 145},
GridLines -> {{85, 115}, {}}
]
翻译
在上面的代码中,我绘制了一个正态曲线:1/(15*E^((x - 100)^2/450)*Sqrt[2*Pi])
{x, 55, 145}
然后我在85和115的位置添加了纵向网格线。
GridLines -> {{85, 115}, {}}
Gridlines
期望水平网格线位置的地方,您需要提供空白的{}。一个替代方案是将垂直线看作具有无限斜率的直线。 因此,对于位于x = 2 * pi的垂直线,我们可以像这样操作:
Plot [{Sin [x],10 ^ 10(x-2 \[Pi])},{x,0,10},PlotRange -> {-1,1}]
请注意,术语10 ^ 10模拟了无限斜率。 如果不使用选项PlotRange -> {-1, 1},则“主导”函数是直线,因此Sin [x]函数实际上看起来像一条水平线。