在Mathematica中绘制水平和垂直线

28
在Mathematica中,如何在给定数字处绘制水平线?如何在给定数字处绘制垂直线?

9
这篇最近的 Wolfram 博客文章完全回答了这个问题。 - Alexey Popkov
5个回答

33

如果您正在使用 Plot(或ListPlot等),最简单的解决方案是使用GridLines选项,该选项允许您指定要绘制线条的xy值。例如:

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}}]

many lines

编辑以添加:

当然,如果您只想在给定的单个数字处绘制一条线,则此解决方案有效。例如,如果您想要重现dreeve的回答中的第二个示例:

Plot[Sin[x], {x, 0, 2 Pi},
 GridLines -> {{4}, {}}]

one line


17

当使用Plot绘制水平线时,最简单的技巧是添加额外的常数函数:

Plot[{Sin[x], .75}, {x, 0, 2Pi}]

对于垂直线,PlotListPlot 都有 Epilog 选项:

Plot[Sin[x], {x, 0, 2Pi}, Epilog->Line[{{4,-100}, {4,100}}]]

enter image description here

但可能最好的是Pillsy答案中提供的GridLines选项。


1
+1:我从未想过或听说过@dreeves提出的第一个建议。 - High Performance Mark

10

一种方法是将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]

enter image description here

另一种方法是调整GridLines


3
使用网格线命令的方法如下:
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轴部分。
{x, 55, 145}

然后我在85和115的位置添加了纵向网格线。

GridLines -> {{85, 115}, {}}

请注意,在Gridlines期望水平网格线位置的地方,您需要提供空白的{}。

2

一个替代方案是将垂直线看作具有无限斜率的直线。 因此,对于位于x = 2 * pi的垂直线,我们可以像这样操作:

Plot [{Sin [x],10 ^ 10(x-2 \[Pi])},{x,0,10},PlotRange -> {-1,1}]

点击查看图片

请注意,术语10 ^ 10模拟了无限斜率。 如果不使用选项PlotRange -> {-1, 1},则“主导”函数是直线,因此Sin [x]函数实际上看起来像一条水平线。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接