Dank eurer Links kann ich jetzt einigermaßen plotten zeichnen und beschriften - aber nur innerhalb des Diagramms.

Ich habe jetzt 2 Funktionen in meinem Diagramm hinzugefügt bzw. eine vertikale Begrenzungslinie. Jetzt zu meiner Frage wie kann ich "ausserhalb" meines Diagramms Beschriftungen (Pfeile und Formeln) siehe Screenshot (grün) vornehmen.

Beispiel

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\usepackage{onimage}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
        enlarge x limits=false,      
        width=11cm,    
        grid=major,  
        samples=33,      
        xmin=9999, xmax=200000000,  
        ymin=0, ymax=333       
     ]

\addplot+[red,thick,mark=none,domain=10000:100000000] {22*(100000000/x)^(1/6)};
\addplot+[red,thin,dashed,mark=none,domain=100000000:1000000000] {22*(100000000/x)^(1/6)};

\draw[green!60!red,thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) -- ({axis cs:50000000,0}|-{rel axis cs:0,0});

%\put(49,48){\vector(0,-1){10}}%
%\put(49,48){\makebox(0,0)[cb]{Mitte}}

\end{semilogxaxis}
\end{tikzpicture}
\end{document}

Update: Ich schaffe es nicht die Funktionen zu beschneiden trotz Erklärung.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
no marks,  
enlarge x limits=false,   
xmin=10000, xmax=100000000, 
ymin=0, ymax=200,            
samples=50,  
clip=false
     ]
\addplot+[const plot mark right,thin,blue,domain=10000:10000000] table[x=colcount,y=colamplitude] {
colamplitude    colcount
142.387 1
142.387 50054
};
\addplot+[red,thick,mark=none,domain=10000:1000000] {143.295225788333*(1000000/x)^(1/5)};
\addplot+[red,thin,dashed,mark=none,domain=1000000:1e8] {143.295225788333*(1000000/x)^(1/5)};
\addplot+[red,thick,mark=none,domain=1000000:1000000000] {143.295225788333};
\node[red,left] at (axis cs:1000000,143.295225788333) {\footnotesize $ 143.3 $};
\draw[yellow!30!orange,thick] ({rel axis cs:1,0}|-{axis cs:0,15.8946951655}) -- ({rel axis cs:0,0}|-{axis cs:0,15.8946951655});
\draw[green!70!red,thick,dashed] ({axis cs:1000000,0}|-{rel axis cs:0,1}) -- ({axis cs:1000000,0}|-{rel axis cs:0,0});
\draw [green!70!red,very thickdomain=10000:1e8](axis cs:0,110.1354266585) -- (axis cs:1000000,110.1354266585); 
\draw [green!70!red,very thick](axis cs:1000000,0) -- (axis cs:1000000,110.1354266585);  
\node[green!70!red,right] at (axis cs:1000000,110.1354266585) {\footnotesize $ \sigma_{\ddot{a}qu} = 110.1 $};
\node[blue,above right] at (axis cs:10000,142.387) {\footnotesize $ \sigma_{a,1} = 142.4 $};
%***************************************************************************
\draw[black!60!red,ultra thick] ({axis cs:1e6,0}|-{rel axis cs:0,1}) --
  ({axis cs:1e6,0}|-{rel axis cs:0,-0.3}) node [below] {$ND$}; 
\draw[black,thick] ({axis cs:11962354,15.8946951655}) -- ({axis cs:151662354,100}) node[above,right] {$\frac{$\sigma_{WK}$}{jd}$};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}

gefragt 14 Dez '16, 09:56

Neuling's gravatar image

Neuling
51146
Akzeptiert-Rate: 0%

bearbeitet 14 Dez '16, 14:42

1

Es ist meist sinnvoll, mehr als ein Thema anzugeben. Außerdem habe ich mir erlaubt, das Bild zu beschneiden, damit wir nicht eine Seite Weiß zwischen zwischen Bild und Quellcode haben. Dass ich durch indizierte Farben außerdem die Bildgröße auf weniger als 3½ KByte reduzieren konnte, ist dagegen nur ein Schmankerl und kann man nicht verlangen.

(14 Dez '16, 10:11) saputello
1

Bitte beachte, dass Du pgfplots immer mit einer compat-Angabe laden solltest. Für nicht allgemein verfügbare Pakete wie onimage sollte man immer eine Download-Möglichkeit angeben. Da onimage im Beispiel gar nicht verwendet wird, empfehle ich es wegzulassen. Außerdem habe ich Farbangabe und Liniendicke korrigiert, weil es extra thick im Beispiel gar nicht gibt.

(14 Dez '16, 10:19) saputello

Ich würde vorschlagen pin zu verwenden.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
    enlarge x limits=false,      
    width=11cm,    
    grid=major,  
    samples=33,      
    xmin=9999, xmax=200000000,  
    ymin=0, ymax=333       
    ]

    \addplot+[red,thick,mark=none,domain=10000:100000000] {22*(100000000/x)^(1/6)};
    \addplot+[red,thin,dashed,mark=none,domain=100000000:1000000000] {22*(100000000/x)^(1/6)};

    \draw[green!60!red,thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) -- ({axis cs:50000000,0}|-{rel axis cs:0,0});

    \coordinate (A) at ({axis cs:50000000,0}|-{rel axis cs:0,0});
    \coordinate (B) at (axis cs:100000000,{22*(100000000/100000000)^(1/6)});

  \end{semilogxaxis}

  \node[pin={below:Bereich 1 zu Ende}] at (A) {};
  \node[pin={above right:Formel 2}] at (B) {};
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 14 Dez '16, 11:54

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Man kann auch innerhalb einer axis mit den ganz normalen tikz-Befehlen zeichnen. Sinnvoll ist dabei ggf. die Koordinaten von axis zu verwenden, wie Du das bereits für die vertikale Linien getan hast. Beim Zeichnen aus dem Plot heraus, ist allerdings zu beachten, dass bei axis in der Voreinstellung auf das Koordinatensystem beschränkt wird. Um aus dem Koordinatensystem heraus zeichnen zu können, muss man Option clip=false setzen. Damit dann bei den Kurven nicht aus dem Koordinatensystem heraus gezeichnet wird, muss man dort ggf. domain anpassen, was ich hier getan habe:

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}% eine compat-Angabe ist immer sinnvoll!
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
        enlarge x limits=false,      
        width=11cm,    
        grid=major,  
        samples=33,      
        xmin=9999, xmax=200000000,
        ymin=0, ymax=333,
        clip=false
     ]

\addplot+[red,thick,mark=none,domain=10000:100000000] {22*(100000000/x)^(1/6)};
\addplot+[red,thin,dashed,mark=none,domain=100000000:200000000] {22*(100000000/x)^(1/6)};

\draw[green!60!red,ultra thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) --
({axis cs:50000000,0}|-{rel axis cs:0,0});

\draw[blue,thick] ({axis cs:60000000,30}) -- ({axis cs:600000000,100}) node[above,right] {Formel 2};
\end{semilogxaxis}
\end{tikzpicture}
\end{document}

alt text

Ja, ich habe die Linie absichtlich blau statt grün gezeichnet, damit man den Unterschied zum vorherigen Bild besser erkennt.

Will man bei dem Grün der Bereichslinie bleiben, kann man diese zu deren Beschriftung übrigens einfach nach unten verlängern und ein node anhängen, also

Open in Online-Editor
\draw[green!60!red,ultra thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) --
({axis cs:50000000,0}|-{rel axis cs:0,0});

durch

Open in Online-Editor
\draw[green!60!red,ultra thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) --
  ({axis cs:50000000,0}|-{rel axis cs:0,-0.3}) node [below] {Bereich 1 zu Ende};

ersetzen und erhält so:

alt text

Näheres zu den bei node verwendeten Optionen ist der tikz-Anleitung zu entnehmen.

Ist man auf das Clipping zwingend angewiesen, kann man auch innerhalb der axis die Koordinaten festlegen und dann außerhalb (aber noch innerhalb derselben tikzpicture) wieder nutzen, wie das auch Henri in seiner Antwort bereits gezeigt hat.

Open in Online-Editor
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}% eine compat-Angabe ist immer sinnvoll!
\begin{document}
\begin{tikzpicture}
  \begin{semilogxaxis}
    [
    enlarge x limits=false,      
    width=11cm,    
    grid=major,  
    samples=33,      
    xmin=9999, xmax=200000000,  
    ymin=0, ymax=333       
    ]

    \addplot+[red,thick,mark=none,domain=10000:100000000] {22*(100000000/x)^(1/6)};
    \addplot+[red,thin,dashed,mark=none,domain=100000000:1000000000] {22*(100000000/x)^(1/6)};

    \draw[green!60!red,thick] ({axis cs:50000000,0}|-{rel axis cs:0,1}) -- ({axis cs:50000000,0}|-{rel axis cs:0,0});

    \coordinate (Formel2) at ({axis cs:60000000,30});
    \coordinate (Bereich1) at ({axis cs:50000000,0});

  \end{semilogxaxis}

  \draw[blue,thick] (Formel2) -- +(2,1) node[above,right] {Formel 2};;
  \draw[green!60!red,thick] (Bereich1) -- +(0,-1) node[below] {Bereich 1 zu Ende};

\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 14 Dez '16, 10:48

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 14 Dez '16, 15:13

@alle Danke ich habe alles verstanden und ausprobiert bis auf " Damit dann bei den Kurven nicht aus dem Koordinatensystem heraus gezeichnet wird, muss man dort ggf. domain anpassen, was ich hier getan habe...."

Nun zu meiner Frage. Kann ich irgendwie eine y-Achse Domain festlegen?Gewisse Funktionen kommen aus einem höheren Y-Bereich "daher" als im Programm als y-Limit definiert ist .. Danke

(14 Dez '16, 14:22) Neuling

@Neuling: In dem Fall ist es ggf. einfacher, außerhalb der axis zu zeichnen und deren Clipping aktiv zu lassen, wie im letzten Beispiel gezeigt.

(14 Dez '16, 15:08) saputello

@Neuling: Man kann auch für die y-Achse eine Domain festlegen. Beispiel: restrict y to domain=0:333

(14 Dez '16, 22:54) esdd
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×728
×296
×50

gestellte Frage: 14 Dez '16, 09:56

Frage wurde gesehen: 10,021 Mal

zuletzt geändert: 14 Dez '16, 22:54