プロットに垂直線を追加する方法
How Add Vertical Line Plot
解決:
垂直線を追加する簡単な方法は、エピローグ。
次に例を示します。
f [x _]:=(x ^ 2 z)/((x ^ 2-y ^ 2)^ 2 + 4 q ^ 2 x ^ 2)/。 {y->π/ 15、z-> 1、q->π/ 600} Quiet [maxy = FindMaxValue [f [x]、x] * 1.1] lineStyle = {Thick、Red、Dashed}; line1 = Line [{{π/ 15 + 1 / 50、0}、{π/ 15 + 1/50、maxy}}]; line2 = Line [{{π/ 15-1 / 50、0}、{π/ 15-1 / 50、maxy}}]; Plot [{f [x]、f [π/ 15]、f [π/ 15] / Sqrt [2]}、{x、π/ 15-1 / 20、π/ 15 + 1/20}、PlotStyle- > {自動、ディレクティブ[lineStyle]、ディレクティブ[lineStyle]}、エピローグ-> {ディレクティブ[lineStyle]、line1、line2}]
警告
として行を追加している間エピローグ(またはProlog)オブジェクトはほとんどの場合機能します。たとえば、データセットの最小値と最大値を自動的に見つけるなど、自動化するとメソッドが簡単に失敗する可能性があります。次の例を参照してください。 赤い縦線がありません で$ x = $ 5:
data1 = Table [0、{10}]; data2 = {1.、1.、1.1 * ^ 18、1。、6.、1.2、1。、1.、1.、148341。}; [メール保護] {ListPlot [data1、Epilog-> {赤、[メール保護] {{5、[メール保護]}、{5、[メール保護]}}}]、ListPlot [data2、Epilog-> {赤、[メール保護] {{5、[メール保護]}、{5、[メール保護]}}}]}
左の場合、最小とデータの最大数は同じであることが判明したため、垂直線には高さがありません。 2番目のケースでは、 Mathematica 自動的に選択されたため、線を引くことができませんPlotRange(選択PlotRange->すべてのヘルプ)。さらに、プロットが動的設定の一部であり、垂直プロット範囲が操作される場合、それに応じて線の端点を更新する必要があり、特別な注意が必要です。
解決
もちろん、これらのケースはすべて処理できますが、より便利で簡単なオプションを使用することもできます。グリッド線:
プロット[{f [x]}、{x、π/ 15-1 / 20、π/ 15 + 1/20}、GridLines-> {{π/ 15 + 1/50、π/ 15-1 / 50} 、{f [π/ 15]、f [π/ 15] / Sqrt [2]}}、PlotRange->すべて]
そして極端なデータセットの場合:
[メール保護] {ListPlot [data1、GridLines-> {{{5、Red}}、None}]、ListPlot [data2、GridLines-> {{{5、Red}}、None}]}
1つの方法は使用することですグリッド線:
f [x _]:=(x ^ 2 z)/((x ^ 2-y ^ 2)^ 2 + 4 q ^ 2 x ^ 2)/。 {y->π/ 15、z-> 1、q->π/ 600}プロット[f [x]、{x、π/ 15-.1、π/ 15 + .1}、GridLines-> {{ Pi / 15-1 / 20、Pi / 15 + 1/20}、{f [Pi / 15]、f [Pi / 15] / Sqrt [2]}}、PlotRange-> All、Frame-> True、Axes ->誤り]
使える表示しますがエピローグの方が優れています。
f [x _]:=(x ^ 2 z)/((x ^ 2-y ^ 2)^ 2 + 4 q ^ 2 x ^ 2)/。 {y->π/ 15、z-> 1、q->π/ 600} plot = Plot [{f [x]、f [π/ 15]、f [π/ 15] / Sqrt [2]}、 {x、π/ 15-.01、π/ 15 + .01}、PlotRange-> {{0、0.26}、自動}]; Show [plot、Graphics [{Black、Line [{{Pi / 15 + 1 / 20、2000}、{Pi / 15 + 1 / 20、9000}}]}]、Graphics [{Black、Line [{{Pi / 15-1 / 20、2000}、{Pi / 15-1 / 20、9000}}]}]]