【发布时间】:2011-02-23 05:55:21
【问题描述】:
在 Mathematica 中,如何在给定数字处绘制一条水平线?如何在给定数字处绘制一条垂直线?
【问题讨论】:
-
This recent Wolfram Blog post 完全回答了这个问题。
在 Mathematica 中,如何在给定数字处绘制一条水平线?如何在给定数字处绘制一条垂直线?
【问题讨论】:
另一种方法是将垂直线视为无限斜率的直线。所以对于位于 x=2*pi 的垂直线,我们可以这样做:
Plot[{Sin[x], 10^10 (x - 2 \[Pi])}, {x, 0, 10}, PlotRange -> {-1, 1}]
请注意,术语 10^10 模拟了无限斜率。如果您不使用选项 PlotRange -> {-1, 1},“主导”函数是直线,因此 Sin[x] 函数实际上显示为水平线。
【讨论】:
像这样使用网格线命令:
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 预期水平网格线位置的地方提供空白 {}。
【讨论】:
如果您实际使用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's answer 中的第二个示例:
Plot[Sin[x], {x, 0, 2 Pi},
GridLines -> {{4}, {}}]
【讨论】:
一种方法是将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 时的水平线情况,最简单的技巧是只包含额外的常量函数:
Plot[{Sin[x], .75}, {x, 0, 2Pi}]
对于垂直线,Plot 和 ListPlot 有 Epilog 选项:
Plot[Sin[x], {x, 0, 2Pi}, Epilog->Line[{{4,-100}, {4,100}}]]
但可能最好的是 Pillsy 的答案中给出的GridLines 选项。
【讨论】: