三角関数のグラフ化



Graphing Trigonometric Functions



解決:

この回答の焦点は、ループとpgfplotsの問題にあります。 pgfplotsのループは、プレーンなTiよりも少し注意が必要です。 Z.これは方法のためですpgfplotsは調査を行い、最後に軸の内容を「実行」します。詳細な議論はセクションで見つけることができます 8.1ユーティリティコマンド マニュアルv1.16の。要するに、平野 foreachは、最も単純な実装で常に機能するとは限りません。

ただし、ここでは間違いなくループを使用して物事を単純化することができます。これにより、スタイルを定義する必要が大幅に回避されます。これは、ループ内で物事を繰り返す場合、変更する必要があるのは1回だけだからです。変更点は次のとおりです。



A.の使用のサンプル

 addplot [draw = none、mark = *、samples at = {-3 / 4、-5 / 8、...、1/4}]({x * pi}、{f(x * pi)}) ;

明示的な座標の長いリストの代わりに、



B.水平の破線のプロットの3つのプロットにわたるループ(サンプル数の削減とともに)、つまり

 pgfplotsinvokeforeach {-1,1,3} {%y = -1,1,3最大値 addplot [破線、ドメイン= -13 * pi / 16:5 * pi / 16、samples = 2、gray] {# 1};}

3つの別々のプロットの代わりに。

C.たった1つのプロット



 addplot [domain = -13 * pi / 16:5 * pi / 16、samples = 300、gray、thick] {f( x)};

3つではなく。

D.入力からのxティックラベルのきれいなプリント。これにより、の長いリストを追加する必要がなくなります。xticklabels。

ピンをループに単純化しても、それぞれに固有のものが多すぎるため、ここではそれほどエレガントにはなりません(ただし、現在表示されているZarkoの投稿と同様に、スタイルを少し変更しました)。あなたはそれをすることができます edef temp { noexpand ...} tempトリックp。マニュアルの543。

これがコードです。

 documentclass [border = 4mm] {standalone}  usepackage {amsmath}  usepackage {pgfplots}  pgfplotsset {compat = 1.16}  usetikzlibrary {decorations.pathreplacing}  begin {document}  begin {tikzpicture} [every pin / .append style = {pin distance = 1ex、inner sep = 1pt、font =  footnotesize、pin edge = {solid、-、shorten<=-3pt} }] egin{axis}[ axis lines=middle,clip=false,,axis on top, declare function={f(x)=2*cos(4*x+3*pi)+1;}, xmin=-2.75,xmax=1,ymin=-2,ymax=5, ytick={-1,3}, xtick={-3*pi/4,-5*pi/8, -pi/2, -3*pi/8, -pi/4,-pi/8,pi/8, pi/4}, xticklabel={% pgfmathtruncatemacro{mynum}{round(abs(8*	ick/pi))}% pgfmathtruncatemacro{mygcd}{gcd(8,mynum)}% pgfmathtruncatemacro{mynum}{mynum/mygcd}% pgfmathtruncatemacro{myden}{8/mygcd}% pgfmathtruncatemacro{itest}{2+sign(	ick)*ifthenelse(mynum==1,2,1)}% $ifcaseitest -frac{pi}{myden} or -frac{mynumpi}{myden} or 0 or frac{mynumpi}{myden} or frac{pi}{myden} fi$% }, xticklabel style={black}, yticklabel style={black,fill=white,inner sep=0pt, outer sep=0pt}, xlabel=$x$, ylabel=$y$, x post scale=2, trig format plots=rad] addplot[domain=-13*pi/16:5*pi/16,samples=300,gray,thick]{f(x)}; addplot [draw=none,mark=*,samples at={-3/4,-5/8,...,1/4}] ({x*pi},{f(x*pi)}); pgfplotsinvokeforeach{-1,1,3}{% y = -1,1,3 max value addplot[dashed, domain=-13*pi/16:5*pi/16,samples=2,gray]{#1};} %--------------------------------------------------------------------------------------------------------------------------------- % Function Label 
ode[pin={[pin distance = 4ex]-80:{footnotesize $f(x)=2cos(4x+3pi)+1$}},scale=1] at (pi/16,-0.5) {}; %--------------------------------------------------------------------------------------------------------------------------------- % Period Label path (-3*pi/4,0) coordinate (P); draw [decoration={brace}, decorate, thick,color=black]%OrangeRed] (-pi/4,-2) -- (P|--pi/4,-2) node[midway,below=0.5ex,font=footnotesize,scale=1]{$	ext{Period, }T=dfrac{pi}{2}$}; %--------------------------------------------------------------------------------------------------------------------------------- % Range Label path (-13*pi/16-0.05,3) coordinate (R); draw [decoration={brace,mirror}, decorate,thick,color=black]%OrangeRed] (R) -- (R|-0,-1) node[midway,left=1ex,font=footnotesize,text width=6em,scale=1]{Range:\$-1leq f(x)leq 3$}; %--------------------------------------------------------------------------------------------------------------------------------- % Amplitude Label draw[densely dotted,gray] (-pi/4,3) --coordinate (A) (-pi/4,1) node[midway,font=footnotesize,scale=1,inner sep=0pt,fill=white,text=black]$ ; %--------------------------------------------------------------------------------------------------------------------------------- % Coordinate Labels 
ode[pin={90:{$left(-frac{3pi}{4},3
ight)$}}] at (-3*pi/4,3) {}; 
ode[pin={45:{$left(-frac{5pi}{8},1
ight)$}}] at (-5*pi/8,1) {}; 
ode[pin={-90:{$left(-frac{pi}{2},-1
ight)$}}] at (-pi/2,-1) {}; 
ode[pin={-15:{$left(-frac{3pi}{8},1
ight)$}}] at (-3*pi/8,1) {}; 
ode[pin={90:{$left(-frac{pi}{4},3
ight)$}}] at (-pi/4,3) {}; end{axis} end{tikzpicture} end{document}  

ここに画像の説明を入力してください


あなたのプログラムは非常によく書かれているので、わずかな改善しかできません。例えば:

  • ノードのスタイル定義ですべてのスタイルオプションを収集する
  • 中括弧の一般的なスタイルを定義する(あなたはで定義された派手なバージョンが好きかもしれません書道図書館)
  • プロットの一般的なオプションはに移動します軸オプション
  • デフォルト設定を繰り返さない。例えば、scale = 1は不要などです
 documentclass [border = 4mm] {standalone}  usepackage {pgfplots}  usepackage {amsmath}  pgfplotsset {compat = 1.16}  usetikzlibrary {arrows.meta、decorations.pathreplacing、calligraphy、%はdecorations.pathreplacingの位置の後にロードする必要がありました}  begin {document}  begin {tikzpicture} [auto、> = {Stealth [length = 4pt]}、every pin / .append style = {pin distance = 1.5ex、inner sep = 1pt、font =  footnotesize、pin edge = {solid、short<=-3pt} }, Brace/.style = {decorate,% fancy, for fun decoration={calligraphic brace, raise=3pt, amplitude=6pt}, thick, pen colour={red} }, lbl/.style = {fill=white,align=center,font=footnotesize, inner sep=1pt,} ] egin{axis}[ axis lines=middle,clip=false,axis on top, declare function={f(x)=2*cos(4*x+3*pi)+1;}, xmin=-2.75,xmax=1,ymin=-2,ymax=5, ytick={-1,3}, xtick={-3*pi/4,-5*pi/8, -pi/2, -3*pi/8, -pi/4,-pi/8,pi/8, pi/4}, xticklabels={ $-frac{3pi}{4}$, $-frac{5pi}{8}$, $-frac{pi}{2}$, $-frac{3pi}{8}$, $-frac{pi}{4}$, $-frac{pi}{8}$, $frac{pi}{8}$, $frac{pi}{4}$}, yticklabel style={fill=white,inner sep=1pt}, xlabel=$x$, ylabel=$y$, x post scale=2, trig format plots=rad, samples=100, ] % addplot[domain=-13*pi/16:5*pi/16,gray!50,thick]{f(x)}; addplot[domain=-3*pi/4:-pi/4,black,thick]{f(x)}; addplot[draw=none,mark=*] coordinates { (-3*pi/4,{f(-3*pi/4)}) (-5*pi/8,{f(-5*pi/8)}) (-pi/2,{f(-pi/2)}) (-3*pi/8,{f(-3*pi/8)}) (-pi/4,{f(-pi/4)}) (-pi/8,{f(-pi/8)}) (0,{f(0)}) (pi/8,{f(pi/8)}) (pi/4,{f(pi/4)}) }; draw[dashed,gray] (-13*pi/16, 3) -- (5*pi/16, 3);% max value draw[dotted,gray] (-13*pi/16, 1) -- (5*pi/16, 1);% DC value draw[dashed,gray] (-13*pi/16,-1) -- (5*pi/16,-1);% min value %--------------------------------------------------------------------------------------------------------------------------------- % Function Label 
ode[pin=-80:{$f(x)=2cos(4x+3pi)+1$}] at (pi/32,-0.803) {}; %--------------------------------------------------------------------------------------------------------------------------------- % Period Label draw[Brace] (-pi/4,-1.9) -- node[below=2ex,lbl]{Period, $T=pi/2$} (-3*pi/4,-1.9) ; %--------------------------------------------------------------------------------------------------------------------------------- % Range Label draw[Brace]%OrangeRed (-13*pi/16,-1) -- node[left=1em,lbl] {Range:\$-1leq f(x)leq 3$} (-13*pi/16,3); %--------------------------------------------------------------------------------------------------------------------------------- % Amplitude Label draw[densely dotted,gray,] (-pi/4,3) -- node[sloped, lbl, text=black] =2$ (-pi/4,1); %--------------------------------------------------------------------------------------------------------------------------------- % Coordinate Labels 
ode[pin= 90:{$left(-frac{3pi}{4},3
ight)$}] at (-3*pi/4,3) {}; 
ode[pin= 45:{$left(-frac{5pi}{8},1
ight)$}] at (-5*pi/8,1) {}; 
ode[pin=-90:{$left(-frac{pi}{2},-1
ight)$}] at (-pi/2,-1) {}; 
ode[pin=-15:{$left(-frac{3pi}{8},1
ight)$}] at (-3*pi/8,1) {}; 
ode[pin= 90:{$left(-frac{pi}{4},3 
ight)$}] at (-pi/4,3) {}; end{axis} end{tikzpicture} end{document}  

ここに画像の説明を入力してください