\draw in ambiente axis – il bounding box non cambia

  • Creatore
    Topic
  • #102935
    Enrico Maria
    Partecipante
      Up
      0
      Down
      ::


      L’esempio seguente è funzionante.

      `\documentclass{standalone}

      \usepackage{xcolor}
      \usepackage[utf8]{inputenc}
      \usepackage{amsmath,amsfonts}
      \usepackage{bm}
      \usepackage{calc}
      \usepackage{tikz}
      %\usepackage{pbox}
      \usetikzlibrary{decorations}
      \usetikzlibrary{calc}
      \usetikzlibrary{patterns}
      \usepackage{tikzscale}
      \usepackage{pgfplots}
      \pgfplotsset{compat=1.12}

      \newcommand{\mat}{\mathbf}
      \renewcommand{\vec}{\bm}

      \begin{document}

      \begin{tikzpicture}
      \begin{axis}[xmin=-5,xmax=5,ymin=-1.5,ymax=1.5,axis equal image=true,axis lines=middle,axis line style={->},xticklabels=none,yticklabels=none,ticks=none]
      \addplot+[blue,thick,mark=none,samples=200,domain=-2.875:2.875] {sin(deg(2*pi*x))};
      \addplot+[blue,thick,dashed,mark=none,samples=200,domain=-4.125:-2.875] {sin(deg(2*pi*x))};
      \addplot+[blue,thick,dashed,mark=none,samples=200,domain=2.875:4.125] {sin(deg(2*pi*x))};
      \addplot+[draw=none,blue,mark=*,mark options={fill=blue},domain=-3.75:3.75,samples=16] {sin(deg(2*pi*x))};

      \node (a1) at (.75,-1) {};
      \node (a2) at (1.25,1) {};
      \node (b1) at (.75,1.5) {};
      \node (b2) at (1.25,1.5) {};
      \draw[help lines,very thin] (a1) — (b1);
      \draw[help lines,very thin] (a2) — (b2);
      \draw[|<->|] (b1.center) — (b2.center) node [sloped,midway,above] {$h$};

      \end{axis}

      \end{tikzpicture}

      \end{document}`

      Ciò che non capisco e che quindi non so risolvere è il fatto che l’aggiunta di grafica nell’ambiente axis che esca al di fuori del box di axis non fa adattare il bounding box. Non voglio aumentare ymax, ma solo vedere più su di ymax.

      Grazie in anticipo,
      Enrico Maria

      Edit: “banalmente” la soluzione è portare i 3 \drawing fuori dall’ambiente axis. Tuttavia mi interesserebbe comunque sapere perché, in quanto un problem è rimasto.
      Compilando il codice seguente si vede che le “freccette” create con \draw non fanno sì che si allarghi correttamente il bounding box.

      `\documentclass{standalone}

      \usepackage{xcolor}
      \usepackage[utf8]{inputenc}
      \usepackage{amsmath,amsfonts}
      \usepackage{bm}
      \usepackage{calc}
      \usepackage{tikz}
      %\usepackage{pbox}
      \usetikzlibrary{decorations}
      \usetikzlibrary{calc}
      \usetikzlibrary{patterns}
      \usepackage{tikzscale}
      \usepackage{pgfplots}
      \pgfplotsset{compat=1.12}

      \newcommand{\mat}{\mathbf}
      \renewcommand{\vec}{\bm}

      \begin{document}

      \begin{tikzpicture}
      \begin{axis}[xmin=-5,xmax=5,ymin=-1.5,ymax=1.5,axis equal image=true,axis lines=middle,axis line style={->},xticklabels=none,yticklabels=none,ticks=none]
      \addplot+[blue,thick,mark=none,samples=200,domain=-2.875:2.875] {sin(deg(2*pi*x))};
      \addplot+[blue,thick,dashed,mark=none,samples=200,domain=-4.125:-2.875] {sin(deg(2*pi*x))};
      \addplot+[blue,thick,dashed,mark=none,samples=200,domain=2.875:4.125] {sin(deg(2*pi*x))};
      \addplot+[draw=none,blue,mark=*,mark options={fill=blue},domain=-3.75:3.75,samples=16] {sin(deg(2*pi*x))};

      \node (a1) at (.75,-1) {};
      \node (a2) at (1.25,1) {};
      \node (b1) at (.75,1.5) {};
      \node (b2) at (1.25,1.5) {};
      \node (c1) at (a1) {};
      \node (c2) at (1.75,-1) {};
      \node (d1) at (.75,-2.5) {};
      \node (d2) at (1.75,-2.5) {};
      \end{axis}

      \draw[help lines,very thin] (a1) — (b1);
      \draw[help lines,very thin] (a2) — (b2);
      \draw[|<->|] (b1.center) — (b2.center);% node [sloped,midway,above] {$h$};
      \draw[help lines,very thin] (c1) — (d1);
      \draw[help lines,very thin] (c2) — (d2);
      \draw[|<->|] (d1.center) — (d2.center);% node [sloped,midway,above] {$2h$};

      \end{tikzpicture}

      \end{document}`

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #102936
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Ciao.
          Esiste un’opzione che imposta pgfplots a non ritagliare la tela del grafico.
          Questa opzione si chiama
          `clip=false`

          Il vantaggio è che puoi utilizzare le coordinate del grafico per esempio le ‘axis cs’.
          R.

        • #102937
          Enrico Maria
          Partecipante
            Up
            0
            Down
            ::


            Chiedo scusa per non aver risposto, fin’ora. Comunque risolsi il problema e ora non ricordo nemmeno più come. Comunque questa tua risposta potrà sicuramente servirmi in futuro, quindi grazie mille! 🙂

        Visualizzazione 1 filone di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top