関数の漸近線サマリー図を作成する

関数の漸近線サマリー図を作成する

図は次のようになると思います。

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

しかし、私が作成した図はこの説明と一致しません T2 これが私の試みです

\documentclass[]{article}
\usepackage[left=.5cm,right=.5cm,top=3cm,bottom=1cm]{geometry}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{esvect}
\usepackage{ifthen}
\usepackage{stmaryrd}
\usepackage{xspace}
\usepackage{mathtools}

\newcommand{\lm}[2]{\displaystyle{\lim_{{#1}\to {#2}}}}

\begin{document}

\begin{center}
\begin{tikzpicture}
\node[rectangle, draw=brown, fill=brown!75, minimum height=1cm, minimum width=5cm, rounded corners] (1) {$\lm{x}{\infty}f(x) = a$};
\node[rectangle, draw=brown, fill=brown!75, minimum height=1cm, minimum width=5cm, rounded corners, right= 1cm of 1] (2) {$\lm{x}{\infty}f(x) = \infty$};
\node[rectangle, draw=brown, fill=brown!75, minimum height=1cm, minimum width=5cm, rounded corners, right= 1cm of 2] (3) {$\lm{x}{a}f(x) = a$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=5cm, rounded corners, below left= 1cm and 0cm of 2] (4) {$\lm{x}{\infty}\left[f(x) - (ax - b)\right] = 0$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=4cm, rounded corners, right= 1mm of 4] (5) {$\lm{x}{\infty}\dfrac{f(x)}{x} = a \ ; \ a \neq 0$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=3cm, rounded corners, right= 1mm of 5] (6) {$\lm{x}{\infty}\dfrac{f(x)}{x} = \infty$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=3cm, rounded corners, right= 1mm of 6] (7) {$\lm{x}{\infty}\dfrac{f(x)}{x} = 0$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=3cm, rounded corners, below left= 1cm and -2cm of 5] (8) {$\lm{x}{\infty}\left[f(x) - ax\right] = b$};
\node[rectangle, draw=cyan, fill=cyan!50, minimum height=1cm, minimum width=3cm, rounded corners, right= 1mm of 8] (9) {$\lm{x}{\infty}\left[f(x) - ax\right] = \infty$};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, below left = 1cm and 2cm of 8] (10) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ asymptote horizontale \\ d'équation $y=a$ \\ au voisinage de $\infty$
\end{minipage}};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, right = 1mm of 10] (11) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ asymptote oblique \\ d'équation $y=ax+b$ \\ au voisinage de $\infty$
\end{minipage}};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, right = 1mm of 11] (12) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ branche parabolique \\ de direction la droite \\ d'équation $y=ax$ \\ au voisinage de $\infty$
\end{minipage}};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, right = 1mm of 12] (13) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ branche parabolique \\ de direction l'axe des ordonnées \\ d'équation $y=ax$ \\ au voisinage de $\infty$
\end{minipage}};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, right = 1mm of 13] (14) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ branche parabolique \\ de direction l'axe des abscisses \\ d'équation $y=ax$ \\ au voisinage de $\infty$
\end{minipage}};
\node[rectangle, draw=green, fill=green!50, minimum height=5cm, rounded corners, right = 1mm of 14] (15) {
\begin{minipage}{2.5cm}
$(C_f)$ admet une \\ asymptote verticale \\ d'équation $x=a$
\end{minipage}};
\draw[blue, very thick,-latex] ([xshift=-2cm]1.south) -- ([xshift=-1cm] 10.north);
\draw[blue, very thick,-latex] ([xshift=2cm]3.south) -- ([xshift=1cm] 15.north);
\draw[blue, very thick,-latex] ([xshift=-1mm]2.south) -- (4.north);
\draw[blue, very thick,-latex] (2.south) -- (5.north);
\draw[blue, very thick,-latex] ([xshift=1mm]2.south) -- (6.north);
\draw[blue, very thick,-latex] ([xshift=3mm]2.south) -- (7.north);
\draw[blue, very thick,-latex] (5.south) -- (8.north);
\draw[blue, very thick,-latex] (5.south) -- (9.north);
\draw[blue, very thick,-latex] (4.south) -- (11.north);
\draw[blue, very thick,-latex] (8.south) -- (11.north);
\draw[blue, very thick,-latex] (9.south) -- (12.north);
\draw[blue, very thick,-latex] (6.south) -- (13.north);
\draw[blue, very thick,-latex] (7.south) -- (14.north);
\end{tikzpicture}
\end{center}

\end{document}

答え1

これを行う 1 つの方法は、可能な限り既存のアプローチを再利用することです。ただし、配置に関しては、より優れた一貫性のある代替手段があります。少なくとも、これはより良い出発点です。

私のコメントに従ってくださいflow of changes:

% ~~~ REFACTORING ~~~~~~~~~~~~
% * commented out unsused packages
% * defining styles to simplify code (you can still remove or vary all those \\)
% * adjusted code indenting and formatting for better visibility of what's going on
% * tried \def vs. \newcommand, which seems to be a bit faster during compile
%   (Tikz seems to prefer TeX-notation here)
% * demonstrated refactoring for the connectors: (2) -- (4), (5) -- (8)

The styles色、サイズなどに関連する部分はさらにリファクタリングできるかもしれませんが、現時点ではこれで十分です。シフトについても同様です。

Please look upこれらすべての詳細を並行してpgfマニュアル

For the brown row私はあなたのアプローチを採用し、シフトを簡素化し、つまりあなたの選択権を置き換えました(これにより、前述のようにエラーが発生していました)。

For the other onesアプローチは異なります:

  • 最初の(一番左の)ものを\node絶対位置に配置する
  • XSBLなどで定義される間にいくらかの xshift を挟んで、東から西に置きます。

The text in the green boxestext width=Tikzではと を使ってより適切に制御できますalign=pgfマニュアル私のアプローチではこれらは\\もはや必要ありませんが、テキストフローをより適切に制御するために引き続き使用できます。

The changes for the connectors線と についてはデモンストレーションを行いました(2) -- (4)(5) -- (8)、詳細な調整は皆さんにお任せします。

  • 最初のものは単純明快です
  • 2番目は、相対座標で与えられた中間点を必要とする。
  • ! 下方向へのシフトとコーナー半径により、アーティファクトが発生する可能性があります。

The key syntax here極座標を使用しています<node name>.<angle>。例えば、(2.185)ノード (2) を取り、このノードの中心と角度 (または海事用語では西より少し遠い角度) からビームを放射し185deg、ノードの境界と交差するまで放射します。この方法では、開始点と終了点を好きなように移動できます。

Lots is left for you調整に関しては、基本的には次のようになります。

  • の変化XSBXSBLおよびXSG
  • 各ノードの極角
  • おそらく左ノードの絶対位置

Putting an arrow midway可能ですが、何らかの装飾が必要となり、ほとんどの場合コンパイル時間が長くなります。本当に必要ですか?

Finally最初からクリーンなコーディングを行い、できるだけ頻繁にリファクタリングすることが常に良い考えです。

結果

% ~~~ REFACTORING ~~~~~~~~~~~~
% * commented out unsused packages
% * defining styles to simplify code (you can still remove or vary all those \\)
% * adjusted code indenting and formatting for better visibility of what's going on
% * tried \def vs. \newcommand, which seems to be a bit faster during compile
%   (Tikz seems to prefer TeX-notation here)
% * demonstrated refactoring for the connectors: (2) -- (4), (5) -- (8)

\documentclass[]{article}
\usepackage[left=.5cm,right=.5cm,top=3cm,bottom=1cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}    % <<<
%\usepackage{tkz-euclide}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
%\usepackage{esvect}
%\usepackage{ifthen}
%\usepackage{stmaryrd}
%\usepackage{xspace}
%\usepackage{mathtools}

%\newcommand{\lm}[2]{\displaystyle{\lim_{{#1}\to {#2}}}}
\def\lm#1#2{\displaystyle{\lim_{{#1}\to {#2}}}}

\begin{document}

\begin{center}
 \begin{tikzpicture}[
    DIM/.style={ minimum height=1cm, minimum width=5cm, rounded corners},
    A/.style={draw=brown, fill=brown!75,DIM},
    B/.style={draw=cyan,  fill=cyan!50, DIM,minimum width=3cm},
    C/.style={draw=green, fill=green!50, minimum height=5cm, 
              rounded corners,align=center,text width=25mm},
    XSB/.style ={xshift=73mm},
    XSBL/.style={anchor=west,xshift=2mm},   
    XSG/.style ={anchor=west,xshift=4mm},
    ARR/.style ={blue, very thick,->,rounded corners=16pt},
    > = {Stealth},  
 ]
    % ~~~ brown row ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    \node[A,anchor=west] (1) at (0,0)         {$\lm{x}{\infty}f(x) = a$};
    \node[A] (2)             at ([XSB] 1)     {$\lm{x}{\infty}f(x) = \infty$};
    \node[A] (3)             at ([XSB] 2)     {$\lm{x}{a}f(x) = a$};
    
    % ~~~ 1st blue row ~~~~~~~~~~~~~~~~~~~~~~~~~
    \node[B,anchor=west]      (4) at (2,-3)   {$\lm{x}{\infty}\left[f(x) - (ax - b)\right] = 0$};
    \node[B,XSBL] (5) at (4.east) {$\lm{x}{\infty}\dfrac{f(x)}{x} = a \ ; \ a \neq 0$};
    \node[B,XSBL] (6) at (5.east) {$\lm{x}{\infty}\dfrac{f(x)}{x} = \infty$};
    \node[B,XSBL] (7) at (6.east) {$\lm{x}{\infty}\dfrac{f(x)}{x} = 0$};
    
    % ~~~ 2nd blue row ~~~~~~~~~~~~~
    \node[B,anchor=west]      (8) at (4,-6)   {$\lm{x}{\infty}\left[f(x) - ax\right] = b$};
    \node[B,XSBL] (9) at (8.east) {$\lm{x}{\infty}\left[f(x) - ax\right] = \infty$};
    
    % ~~~ green row ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    \node[C,anchor=west] (10) at (0,-12){
                                $(C_f)$ admet une  asymptote horizontale  
                                d'équation $y=a$ \\ au voisinage de $\infty$};
    \node[C,XSG] (11) at (10.east) {
                                $(C_f)$ admet une \\ asymptote oblique \\
                                d'équation $y=ax+b$ \\ au voisinage de $\infty$};
    \node[C,XSG] (12) at (11.east) {
                                $(C_f)$ admet une \\ branche parabolique \\ 
                                de direction la droite \\ d'équation $y=ax$ \\ 
                                au voisinage de $\infty$};
    \node[C,XSG] (13) at (12.east) {
                                $(C_f)$ admet une \\ branche parabolique \\ 
                                de direction l'axe des ordonnées \\ d'équation 
                                $y=ax$ \\ au voisinage de $\infty$};
    \node[C,XSG] (14) at (13.east) {
                                $(C_f)$ admet une \\ branche parabolique \\ 
                                de direction l'axe des abscisses \\
                                d'équation $y=ax$ \\ au voisinage de $\infty$};
    \node[C,XSG] (15) at (14.east) {
                                $(C_f)$ admet une \\ asymptote verticale 
                                \\ d'équation $x=a$};
    
%   % ~~~ connectors ~~~~~~~~~~~~~~~~
    \draw[ARR] ([xshift=-2cm]1.south) -- ([xshift=-1cm] 10.north);
    \draw[ARR] ([xshift=2cm]3.south) -- ([xshift=1cm] 15.north);
    
    % ~~~ TO DO: rework all other \draw's like this one: ~~~~~~~~~
    \draw[ARR] (2.185) -| (4.20);
    
    \draw[blue, very thick,-latex] (2.south) -- (5.north);
%   \draw[blue, very thick,-latex] ([xshift=1mm]2.south) -- (6.north);
%   \draw[blue, very thick,-latex] ([xshift=3mm]2.south) -- (7.north);

    \draw[ARR] (5.230) -- ++(0,-.6) -| (8.north);


%   \draw[blue, very thick,-latex] (5.south) -- (9.north);
%   \draw[blue, very thick,-latex] (4.south) -- (11.north);
%   \draw[blue, very thick,-latex] (8.south) -- (11.north);
%   \draw[blue, very thick,-latex] (9.south) -- (12.north);
%   \draw[blue, very thick,-latex] (6.south) -- (13.north);
%   \draw[blue, very thick,-latex] (7.south) -- (14.north);
 \end{tikzpicture}
\end{center}

\end{document}

関連情報