PGFPlots Paket - Fragen und Antworten

Fragen von TeXwelt.de zum Thema

Klicke auf den Titel, um die Antworten zu lesen - oder sieh alle PGFPlots-Fragen

01/21/2018 08:18 PM
pgfplots: Nur gerade (ungerade) Zahlen auf Achse anzeigen

Wie kann ich bei einem plot table bewirken, dass auf einer Achse nur gerade Zahlen angezeigt werden. Ansonsten möglichst x=data, y=data beibehalten, so dass keine anderen Zahlen (hier etwa die 0) reinkommen.

Ich weiß, man könnte sowas wie xticks={0,2,...<xMax> } machen, aber xMax ist auch nicht immer bekannt; und das ist auch eine Schummellösung.

Das muss doch exakt gehen. :) Ich habe hier mal einen Beitrag gesehen, wo sowas Ähnliches am Rande mit einer Modulo-Rechnung gemacht wurde (ich finde ihn aber nimmer).

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.13}

\pgfplotstableread{
1   2  
2   3   
3   2   
4   5
5   1  
}\datatable
\begin{document}

\begin{tikzpicture}
\begin{axis}[ymin=0,
xtick=data, %ytick=data,   % nur xy-Werte aus Tabelle anzeigen
]
\addplot table [header=false, col sep=space,] {\datatable}; 
\end{axis}
\end{tikzpicture}

\end{document}


01/20/2018 09:19 PM
pgfplots: 'nodes near coords' genau mittig platzieren bei 'matrix plot'

Was muss ich einstellen, damit die nodes near coords genau mittig platziert werden, also anstelle des "dicken Punktes" (mark=o)?

Ich hab mir z.Zt. mit every node near coord/.append style={xshift=0pt,yshift=-7pt, font=\footnotesize}, beholfen, geht das eventuell exakt?

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.13}%

\begin{document}

\begin{tikzpicture}
\begin{axis}[ 
enlargelimits=false,
%
nodes near coords={abc},
% Hilfslösung
%every node near coord/.append style={xshift=0pt,yshift=-7pt,  font=\footnotesize}, 
]

\addplot[
matrix plot,
mark=o,
mesh/cols=3,
point meta=explicit]
table[meta=C] {
x y C
0 0 0
1 0 1
2 0 2
0 1 3
1 1 4
2 1 5
0 2 6
1 2 7
2 2 8
};
\end{axis}
\end{tikzpicture}

\end{document}


01/20/2018 08:21 PM
pgfplots: Problem mit Inline-Tabelle

Mir ist aufgefallen, sobald ich visualization depends on={\thisrowno{0} \as \aaa} verwende, keine Tabelle der Machart

Öffne in Overleaf
\pgfplotstableread{
1 6   
1 4   
3 3    
}\Mydatatable

mehr verwenden kann.

Möglicherweise eine logische Fehlermeldung, aber wie kann ich das beheben? Wäre schon gut, wenn ich Tabellen dieses Typs verwenden könnte. (Hinweis: bei externen Tabellen geht es wieder, das istalso nicht das Problem.)

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.13}

\begin{document}
\pgfplotstableread{
1 6   
1 4   
3 3    
}\Mydatatable

\begin{tikzpicture}

\begin{axis}[enlargelimits=0.2, font=\tiny]
 Geht ---------------------------------
\addplot[mark=*, only marks,  
nodes near coords={abc},
visualization depends on={\thisrowno{0}  \as \aaa},
visualization depends on={\thisrowno{1}  \as \bbb},
]
table[header=false]{%
1 5   
1 3   
3 2 
};

% Geht nicht! ---------------------------------
%\addplot[
%mark=*, only marks,  
%nodes near coords={123},
%visualization depends on={\thisrowno{0}  \as \aaa},
%visualization depends on={\thisrowno{1}  \as \bbb},
%]
%table[header=false]{\Mydatatable};
\end{axis}

\end{tikzpicture}

\end{document}


01/20/2018 11:31 AM
Änderung des Koordinatensystems

dzaic hat mir bereits gezeigt, wie ich Regelkarten erstellen kann. Ich habe das jetzt noch eine Variable für die Anzahl angepasst.

Öffne in Overleaf
\documentclass[
    tikz,
   % borders = 5mm,
]{standalone}
\usepackage{filecontents}
\usepackage{pgfplots,amsmath}

\begin{filecontents}{data.csv}
Stichprobe,Merkmal
1,124
2,126
3,128.5
\end{filecontents}

% Grenzwerte
\newcommand\OEG{127}
\newcommand\UEG{123}
\newcommand\Mittelwert{125}
\newcommand\Anzahl{4}

\begin{document}   
\begin{tikzpicture}   
\begin{axis}[
      clip=false,
      title = \textbf{Regelkarte},
      xlabel = Stichprobe,
      ylabel = Merkmal,     
      ]

      % Grenzen
      \addplot[dashed,thick,red] coordinates { (0,\OEG) (\Anzahl,\OEG) };
      \addplot[dashed,thick,red] coordinates { (0,\UEG) (\Anzahl,\UEG) };
      \addplot[thick,green] coordinates { (0,\Mittelwert) (\Anzahl,\Mittelwert) };

        \node[right] at (axis cs:\Anzahl,\OEG) {OEG=\OEG};
        \node[right] at (axis cs:\Anzahl,\UEG) {UEG=\OEG};
        \node[right] at (axis cs:\Anzahl,\Mittelwert) {Mittelwert=\Mittelwert};

      % Messwerte
      \addplot table[x=Stichprobe, y=Merkmal, col sep=comma] {data.csv};
   \end{axis} 
   \end{tikzpicture} 
\end{document}

alt text

Wie bekomme ich es jetzt noch hin, dass 0 der Ursprung ist? Denn ist gibt ja keine Stichprobe 0. Zum anderen würde ich gerne diesen Rahmen entfernen und nur die X und Y-Achse sehen.


01/19/2018 10:11 AM
Wie erstelle ich eine Regelkarte ?

Guten Morgen Zusammen,

ich würde gerne eine Regelkarte mittels Latex erstellen. Sie soll so aussehen:

alt text

Die Grenzen OEG, UEG und den Mittelwert möchte ich manuell eingeben. Das Gitter (X/Y-Achse) soll sich an den Werten orientieren die ich eingebe.

Folgendermaßen habe ich bereitsangefangen:

Öffne in Overleaf
\documentclass[
    tikz,
    borders = 5mm,
]{standalone} 
\usepackage{pgfplots,amsmath} 
\begin{document}   
\begin{tikzpicture}   
\begin{axis}[
    %Beschriftung
      title = \textbf{Regelkarte},
      xlabel = Stichprobe,
      ylabel = Merkmal,     
    %Formatierung
      %minor tick num=2,
      %grid = both,
    %Grenzen
      ]
      % Grenzen
      \addplot[dashed,thick,red] coordinates { (0,3) (3,3) };
      \addplot[dashed,thick,red] coordinates { (0,1) (3,1) };
      % Nominalwert
      \addplot[thick,green] coordinates { (0,2) (3,2) };
      % Messwerte
   \end{axis} 
   \end{tikzpicture} 
\end{document}

alt text


01/18/2018 11:19 PM
pgfplots: 'matrix plot' Hintergrundfarben erzwingen

alt text

Ich habe hier einen matrix plot für eine Tabelle dort sind die Farben in der Spalte bgcolor willkürlich mit 1,2,... betitelt; woraus pgfplots ein Farbschema zu machen scheint.

Wie kann ich ihn zwingen, eigene Farben zu verwenden, etwa solche, die durch ein Schema des Typs

Öffne in Overleaf
scatter/classes={%
R={red!50},
B={blue!50},
S={lightgray}
},

festgelegt sind. In der Spalte bgcolor müssten dann entsprechend Buchstaben R, B und S stehen. Das bekomme ich nicht hin.

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
enlargelimits=false,
%x = 10mm, y =10mm,  
xtick=data, ytick=data,   % nur xy-Werte aus Tabelle anzeigen
scatter/classes={%
r={red},
b={blue},
s={black},
R={red!50},
B={blue!50},
S={lightgray}
},
]
\addplot[
matrix plot,
nodes near coords, %=\coordindex,
%mark=*,
mesh/cols=3,
point meta=explicit,
%
%visualization depends on={\thisrow{bgcolor} \as \bgcolor},
%point meta=explicit symbolic,
]
table[meta=bgcolor] {
x y bgcolor
1 1 1
2 1 2
3 1 3
1 2 4
2 2 5
3 2 6
};
\end{axis}
\end{tikzpicture}

\end{document}


01/18/2018 08:19 PM
Wie kann ich Werte über eine externe Datei z.B. csv in ein Diagramm als Linienzug überführen?

Hallo Zusammen,

ich möchte mir gerne ein Liniendiagramm erstellen. Dazu sollen die X/Y Werte für den Linienzug extern aus einer Datei wie zum Beispiel einer csv Datei importiert werden.

alt text

Könnt ihr mir dabei weiterhelfen?

Öffne in Overleaf
\documentclass[tikz]{standalone} \usepackage{pgfplots,amsmath} \begin{document}   \begin{tikzpicture}   \begin{axis}[
    %Beschriftung
      title=\textbf{Liniendiagramm},
      xlabel = Probennummer,
      ylabel = y in mm,     %Formatierung
      minor tick num=1,
      grid = both,
      ]
       \addplot table[x index=0,y index=1]{
            0.5  0.50
            0.64  0.53
            0.82  0.83
          };    \end{axis} \end{tikzpicture} \end{document}


01/18/2018 06:13 PM
pgfplots: 'plot table' Spaltennamen festlegen

Ich möchte bei einer Tabelle die Spaltenbenennung (x y p q) aussparen und selbst festlegen.

Ich dachte, das geht mit columns/2/.style = {column name=p}. Scheinbar ist es nicht ganz so einfach. Was muss ich da anders machen?

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
 \pgfplotsset{width=7cm,compat=1.13}

% Tabelle des Typs
% x  y  p  q 
\pgfplotstableread{
1   2   2   5
1   3   7   1
8   2   3   1
9   5   3   6
}\datatable

\begin{document}

\begin{tikzpicture}
\begin{axis}[ymin=0]
\addplot table [
%header=false, 
% columns 0 und 1 werden autom. als x- und y-Koordinaten gewertet
columns/2/.style = {column name=p},
columns/3/.style = {column name=q},
%
%x=p, y=q    % Wieso geht das nicht?
%x=\thisrow{p}, y=\thisrow{q}    % Wieso geht das nicht?
%
] {\datatable}; 
\end{axis}
\end{tikzpicture}

\end{document}


01/17/2018 10:36 PM
pgfplot: matrix plot Layout anpassen

pgfplots gibt sich sehr viel Mühe, ein Farbschema festzulegen. Ich möchte/muss das selbst machen.

Ich denke, es sind nur ein paar triviale Einstellungen, die hier fehlen.


Ich habe hier eine Beispielabelle (diese könnte auch mehr Zeilen haben)

Öffne in Overleaf
table[]  {
x y   Z N color bgcolor
1 1   1 4 r       R
1 2   2 3 s       S
2 1   3 2 b      B
2 2   4 1 b       R
};

und möchte daraus einen matrix plot machen.

  • Klappt soweit: Die Spalten Z und N sollen zum Zähler/Nenner eines Bruches werden.

  • Klappt noch nicht: Die Spalte color soll die Textfarbe festlegen, etwa nach dem Schema \tikzset{TextFarben/.style={r/.style={red}, b/.style={blue}, s/.style={black} }}

  • Klappt auch noch nicht: Die Spalte bgcolor soll die Hintegrundfarbe festlegen, etwa nach dem Schema \tikzset{HintergrundFarben/.style={R/.style={red!50}, B/.style={blue!50}, S/.style={black!50} }}

Also ich komme so weit:

alt text

(wobei die Brüche noch nicht 100% richtig gefärbt sind)

Was muss ich ändern, um einen richtigen matrix plot zu erhalten?

PS: Falls jmd. Einsparungsmöglichkeiten sieht immer gern. Z.B. dreimal *\pgfmathprintnumber[precision=0]*, zweimal *visualization depends on* (anders ging es nicht). Nur die Brüche sollte man pgfplots nicht selbst darstellen lassen, weil sonst Probleme/Fehler aufkommen (die Tabelle kann mitunter sehr große Zahlen enthalten). Die Zahlen in der Tabelle stammen aus Mathematica.

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
 \pgfplotsset{width=7cm,compat=1.13}
\begin{document}

% pgfplots.pdf, S. 115
\pgfplotsset{ZahlenAnzeigen/.style={
%TextFarben, 
nodes near coords*={ 
\pgfmathsetmacro{\Nenner}{int(\nenner)}
\ifnum\Nenner=1
    $\textcolor{red}{\pgfmathprintnumber[precision=0]\zaehler}$%
\else
    ${\frac{\pgfmathprintnumber[precision=0]\zaehler}
    {\pgfmathprintnumber[precision=0]\nenner}}$%
\fi},
every node near coord/.append style={xshift=0pt,yshift=-7pt,  font=\footnotesize}
}}

\tikzset{TextFarben/.style={
r/.style={red},  b/.style={blue}, s/.style={black}
}}

\tikzset{HintergrundFarben/.style={
R/.style={red!50},  B/.style={blue!50}, S/.style={black!50}
}}

\begin{tikzpicture}
\begin{axis}[enlargelimits=0.2]
\addplot[matrix plot,
%mark=*,
only marks,  % ohne das geht es nicht
%point meta=\thisrow{color},
ZahlenAnzeigen,
visualization depends on={\thisrow{Z}  \as \zaehler},
visualization depends on={\thisrow{N}  \as \nenner},
]
table[]  {
x y   Z N color bgcolor
1 1   1 4 b       B
1 2   2 3 s       S
2 1   3 2 b      B
2 2   4 1 r       R
};
\end{axis}
\end{tikzpicture}

\end{document}


01/15/2018 08:00 PM
pgfplots: Label-Platzierung bei 'matrix plot'

Gibt es vielleicht eine Möglichkeit, die Labels wie auf dem Bild zu platzieren?

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[enlargelimits=false,
xticklabel pos=right,   % x-Achse oben statt unten
xlabel = {k}, 
ylabel = {n}, 
% hide x axis, hide y axis,  % Achsen ausblenden
%x = 5mm, y =5mm,   % Maßstab
]
\addplot[
matrix plot,
%mark=*,%nodes near coords=\coordindex,
mesh/color input=explicit,
]
coordinates {
(1,1) [color=red]      (2,1) [color=blue]  (3,1) [color=yellow]

(1,2) [color=black] (2,2) [color=brown] (3,2) [color=magenta]

(1,3) [color=green] (2,3) [color=red]  (3,3) [color=white]
};
\node at (1,1) []{a/b};
\end{axis}
\end{tikzpicture}

\end{document}


01/15/2018 07:42 PM
pgfplots: Schriftart für Achsenbeschriftung wird nicht angenommen

Mir ist aufgefallen, dass ticklabel style={font=\ttfamily} keine Wirkung hat. Was mache ich falsch?

Ich wollte die Schriftart der Zahlen auf den Achsen ändern.

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[enlargelimits=false,
ticklabel style={font=\ttfamily}, % Schriftart wird nicht angenommen?
]
\addplot[
matrix plot,
mark=*,%nodes near coords=\coordindex,
mesh/color input=explicit,
]
coordinates {
(1,1) [color=red]      (2,1) [color=blue]  (3,1) [color=yellow]

(1,2) [color=black] (2,2) [color=brown] (3,2) [color=magenta]

(1,3) [color=green] (2,3) [color=red]  (3,3) [color=white]
};
\end{axis}
\end{tikzpicture}

\noindent Ist: 1 2 3 \\
Soll: \texttt{1 2 3 }

\end{document}


12/15/2017 12:27 AM
Probleme mit Darstellung einer Statistik mit pgfplot


Duplikat zu: Diagramm erstellen Achsenbeschriftung


Wie man erkennt, kann man die Zahlen auf der x-Achse nicht lesen. Ist es hier sinnvoll, die Zahlen nur bspw. in fünf Jahres-Schritten anzugeben oder kann man bspw. die Zahlen vielleicht schräg stellen, dass man sie lesen kann?

Öffne in Overleaf
\begin{filecontents*}{tourism.csv}
Jahr,Besucher
2016-01-01,1792201
2015-01-01,1289139
2014-01-01,997556
2013-01-01,807349
2012-01-01,672773
2011-01-01,565611
2010-01-01,488622
2009-01-01,493940
2008-01-01,502300
2007-01-01,485000
2006-01-01,422280
2005-01-01,374127
2004-01-01,360392
2003-01-01,320000
2002-01-01,277900
2001-01-01,296000
2000-01-01,302900
1999-01-01,262605
1998-01-01,232219
1997-01-01,201654
1996-01-01,200835
1995-01-01,189796
1994-01-01,179241
1993-01-01,157326
1992-01-01,142560
1991-01-01,143459
1990-01-01,141718
1989-01-01,130503
1988-01-01,128823
1987-01-01,129315
1986-01-01,113528
1985-01-01,97443
1984-01-01,85290
1983-01-01,77592
1982-01-01,72600
1981-01-01,72194
1980-01-01,65921
1979-01-01,76912
1978-01-01,75700
1977-01-01,72690
1976-01-01,70180
1975-01-01,71676
1974-01-01,68476
1973-01-01,74019
1972-01-01,68026
1971-01-01,60719
1970-01-01,52908
1969-01-01,44099
1968-01-01,40447
1967-01-01,37728
1966-01-01,34733
1965-01-01,28879
1964-01-01,22969
1963-01-01,17575
1962-01-01,17249
1961-01-01,13516
1960-01-01,12806
1959-01-01,12296
1958-01-01,10111
1957-01-01,9279
1956-01-01,9517
1955-01-01,9474
1954-01-01,6843
1953-01-01,6380
1952-01-01,4823
1951-01-01,4084
1950-01-01,4383
1949-01-01,5312
\end{filecontents*}
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\begin{document}
\sffamily
\begin{tikzpicture}
    \sffamily
      \begin{axis}[
      date ZERO=1949-01-01,
        date coordinates in=x,
        no marks,
        width=16cm,
        height=6cm,
        enlargelimits=false,
        xticklabel={\tiny\year},
        xtick={1949-01-01,1950-01-01,1951-01-01,1952-01-01,1953-01-01,1954-01-01,1955-01-01,1956-01-01,1957-01-01,1958-01-01,1958-01-01,1959-01-01,1960-01-01,1961-01-01,1962-01-01,1963-01-01,1964-01-01,1965-01-01,1966-01-01,1967-01-01,1968-01-01,1968-01-01,1969-01-01,1970-01-01,1971-01-01,1972-01-01,1973-01-01,1974-01-01,1975-01-01,1976-01-01,1977-01-01,1978-01-01,1978-01-01,1979-01-01,1980-01-01,1981-01-01,1982-01-01,1983-01-01,1984-01-01,1985-01-01,1986-01-01,1987-01-01,1988-01-01,1988-01-01,1989-01-01,1990-01-01,1991-01-01,1992-01-01,1993-01-01,1994-01-01,1995-01-01,1996-01-01,1997-01-01,1998-01-01,1999-01-01,2000-01-01,2001-01-01,2002-01-01,2003-01-01,2004-01-01,2005-01-01,2006-01-01,2007-01-01,2008-01-01,2009-01-01,2010-01-01,2011-01-01,2012-01-01,2013-01-01,2014-01-01,2015-01-01,2016-01-01},
        xtick pos=left,
        xtick align=outside,
     %  ymin=0,ymax=50,
        %ytick={50,100,...,150},
         ymin=0,ymax=1 500 000,
     % assume math mode: nicht überprüfen ob der Mathemodus an ist
     % int detect: keine Nachkommastellen für ganze Zahlen anzeigen
     % 1000 sep={\,}: Kleiner Abstand zwischen 3er-Kolonnen
     yticklabel={\pgfmathprintnumber[assume math mode,int detect,1000 sep={\,}]{\tick}},
     % y-Achse nicht skalieren, sondern die tatsächliche Zahl im \tick angeben
     scaled y ticks=false,
     ytick style={draw=none},
     yticklabel pos=right,
     ymajorgrids=true,
    legend style={
             draw=none,
             legend cell align=left,
             at={(0,1.05)},% <-
             anchor=south west,% <-
             legend image code/.code={
               \filldraw[##1] (-.5ex,-.5ex) rectangle (1ex,1ex);
             },
           },
           legend columns=-1% <-
           ]
        \addplot table[col sep=comma,x=Jahr,y={Besucher}] {tourism.csv};
        \addlegendentry{Touristenzahlen pro Jahr};
      \end{axis}
    \end{tikzpicture}
\end{document}


12/11/2017 05:36 PM
Wie kann ich eine abschnittsweise definierte Funktion zeichnen?

Ich möchte mit pgfplots die Funktion zeichnen lassen. Wie mache ich das?

Die Funktion ist f(net) = {0: net < 0; 1: net >= 0.

Ich habe mir schon ein Koordinatensystem erstellt:

Öffne in Overleaf
\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        domain=-50:50,
        xmin=-50, xmax=50,
        ymin=0, ymax=1,
        samples=100;
        axis y line=center,
        axis x line=middle,
        xlabel={net},
        ylabel={y},
    ]
        %Funktion: \addplot...;
    \end{axis}
\end{tikzpicture}
\end{document}
  1. Wie kann ich die Funktion jetzt zeichnen lassen?
  2. Wie kann ich die an den Achsen abgetragenen Werte ändern (x-Achse ohne Werte und y-Achse nur 0.5 und 1)?

Vielen Dank für eure Hilfe


11/14/2017 08:40 PM
Wie kann ich die Fläche zwischen mehreren Pfaden mit Pfeilen kennzeichnen?

Hallo zusammen,

meine Skizze enthält eine Fläche (im Minimalbeispiel grau eingefärbt), die ich gerne mit gleichmäßig verteilten Pfeilen parallel zur y-Achse mit einem beliebigen Abstand füllen würde. Es geht quasi darum, die Kraftänderung zwischen den beiden Kurven darzustellen.

Ich würde mich sehr freuen, wenn jemand von euch eine Lösungsidee hätte!

Öffne in Overleaf
\documentclass[tikz, border=5pt]{standalone}   
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{
  arrows,
  decorations.pathreplacing,
  shapes.symbols,
  angles,
  quotes,
  calc
}
\usepgfplotslibrary{fillbetween}

\begin{document}

    \begin{tikzpicture}
  \pgfdeclarelayer{pre main}
  \pgfsetlayers{pre main,main}
  % Koordinatensystem
  \coordinate (A) at (0, 0) {}; 
  \coordinate (B) at (10, 0) {}; 
  \coordinate (C) at (0, 9) {};
  \coordinate (D) at (4, 0) {};
  \coordinate (E) at (8, 0) {};
  \coordinate (I) at (0, 6) {};
  \coordinate (a) at (4, 6) {};
  \coordinate (b) at (8, 3) {};
  \coordinate (c) at (0, 2) {};
  \coordinate (d) at (9, 5) {};
  % Koordinatensystempfeile
  \draw[->,line width=0.4mm] (A) -- (B) node[below] {$v$};
  \draw[->,line width=0.4mm,name path=AtoC] (A) -- (C) node[left] {$F_\mathrm{T}$};
  % Koordinatenstriche
  \draw[-,line width=0.4mm] (D) -- (4, -0.1) node[below] {$v_\mathrm{ue1}$};
  \draw[-,line width=0.4mm] (E) -- (8, -0.1) node[below] {$v_\mathrm{max}$};
  \draw[-,line width=0.4mm] (I) -- (-0.1, 6) node[left] {$F_\mathrm{vue1}$};
  % Verbindungslinien
  \draw[dotted] (D) -- (a);
  % Graphen
  \draw[name path=KurveI] (I) -- (a);
  \draw[name path=KurveII,bend left=20] (b) to (a);
  \draw[name path=KurveIII,dotted,bend left=20](d) to (c);

    \path [%draw,line width=3,blue,
    name path=IandIV,
    intersection segments={
        of=KurveI and AtoC,
        sequence={A1 -- B0[reverse]}
    }];

  \path [%draw,line width=3,blue,
    name path=IIIandII,
    intersection segments={
        of=KurveIII and KurveII,
        sequence={A1[reverse] -- B1}
    }];

  \pgfonlayer{pre main}
  \fill [
    gray!20,
    intersection segments={
       of=IandIV and IIIandII,
        sequence={A1 -- B1[reverse]},
    }
  ];
  \endpgfonlayer

\end{tikzpicture}

\end{document}

alt text


11/10/2017 12:48 PM
PGFPLOTS - Zwei y-Achsen übereinander mit gleicher Datenquelle

Hallo TexWelt-Gemeinde,

Ich habe ein an sich ein kleines Problem mit einem Diagramm. Und zwar möchte ich mit Latex und PGFPlots 4 Graphen visualisieren. Die Daten dafür stammen aus Excel und liegen als .csv-Datei vor. Jetzt ist nur das Problem, dass diese Messwerte eine Abhängigkeit zwischen Kraft und Weg darstellen und ab einem Gewissen Zeitpunkt sich gegenseitig verdecken, so dass nur noch die zu letzt geplotete Kurve sichtbar ist.

Aus diesem Grund hab ich mir vorgestellt, die y-Achse in zwei Teile zu splitten. Im unteren Teil soll der ytick={0,1,2,...,10} und im oberen Teil der ytick={10,10.5,11,..., 16} sein, damit die Graphen weiter auseinander kommen.

Öffne in Overleaf
\documentclass{scrbook}
\usepackage{pgfplots} 
\begin{document}
\begin{tikzpicture}

\begin{axis}[width=16cm, height=8cm, xlabel=Kraft $F$ in $kN$,ylabel=Weg $s$ in $cm$, title=\textbf{Kraft-Weg-Diagramm }, ytick={0,0.5,1,...16}]
\addplot [mark = *, color = red!0!blue]  table[x=Pressung, y=Weg1, col sep= semicolon] {Datei.csv}

\addplot [mark = *, color = red!33!blue]  table[x=Pressung, y=Weg2, col sep= semicolon] {Datei.csv}

\addplot [mark = *, color = red!66!blue]  table[x=Pressung, y=Weg3, col sep= semicolon] {Datei.csv}

\addplot [mark = *, color = red!100!blue]  table[x=Pressung, y=Weg4, col sep= semicolon] {Datei.csv}
\end{axis}
\end{tikzpicture}
\end{document

Pressung;Weg1;Weg2;Weg3;Weg4

0.011;0.1;5.35;7.23;7.03

0.15;3.63;8.73;9.9;9.93

0.25;5.5;9.63;10.58;10.63

0.35;6.68;10.13;11;11.08

0.5;7.7;10.63;11.45;11.48

0.75;8.93;11.25;11.93;11.9

1;9.65;11.63;12.25;12.28

1.5;10.6;12.15;12.63;12.68

2;11.23;12.55;12.93;12.95

2.5;11.6;12.88;13.15;13.18

3;11.98;13.03;13.3;13.33

3.5;12.25;13.18;13.45;13.48

4;12.45;13.4;13.53;13.6

4.5;12.68;13.5;13.63;13.68

5;;13.55;13.73;13.83

5.5;13.03;13.7;13.8;13.93

6;13.18;13.78;13.88;14

6.5;13.35;13.83;13.95;14.05

7;13.45;13.93;14.05;14.13

7.5;13.55;14;14.1;14.18

8;13.65;14.05;14.15;14.23

8.5;13.73;14.15;14.23;14.28

9;13.8;14.2;14.3;14.33

9.5;13.85;14.28;14.33;14.38

10;13.95;14.3;14.38;14.44


11/08/2017 10:10 PM
pgfplots Achsenbeschriftung

Hallo,

ich würde gern eine Achsenbeschriftung wie auf dem Bild in meinem Diagramm haben.

alt text

Leider habe ich keine Ahnung, wie ich die Achsen normal beschriften kann und den vorletzten Wert durch eine Einheit ersetzen kann. Habt ihr eine Idee?

Crosspost: goLatex

Hier das Minimalbeispiel:

Öffne in Overleaf
\documentclass[margin=10mm]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{width=16cm,compat=1.15}
\usepackage{amsmath}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xlabel=Konzentration in $\si{\percent}$ $\xrightarrow{\hspace*{1cm}}$,
ylabel= Oberflächenspannung in $\si{\milli\newton\per\meter}$ $\xrightarrow{\hspace*{1cm}}$,
]
\addplot[mark=o,error bars/.cd,y dir=both,y explicit]coordinates
{
(0,68.40891501)  +- (0,4.778953312) 
(20,63.98903632) +- (0,4.115686076)
(40,60.64486555) +-  (0,6.848451706)
(60,62.39588189) +- (0,7.741357204)
};
\legend{Messung\\}
\end{axis}
\end{tikzpicture}

\end{document}


10/30/2017 07:35 PM
Graph mit Definitionsmenge in einem xparse-Befehl

Warum ergibt das folgende Beispiel die Fehlermeldung Paragraph ended before \pgfplots@domain@to@foreach was complete?

Öffne in Overleaf
\documentclass{article}
\usepackage{xparse}
\usepackage{pgfplots}
\pgfplotsset{compat=newest,axis lines=middle}
\ExplSyntaxOn

\NewDocumentCommand \Diagramm {}
  {
    \begin{tikzpicture}
    \begin{axis}[xmin=0,xmax=13.8,ymin=0,ymax=58]
    \addplot[domain=0:13] {4*x};
    \end{axis}
    \end{tikzpicture}
  }

\ExplSyntaxOff

\begin{document}

\Diagramm

\end{document}


09/22/2017 04:11 PM
Datenwerte an Koordinaten schreiben PGFPlots

Hi ich versuche mich gerade an der Umgebung PGFplots und bisher klappt auch alles ganz gut. Jetzt habe ich aber folgendes Problem ich habe versucht ein Graphen zu plotten und möchte nun an die verschiedenen Datenpunkte Werte schreiben. Diese sollen aber nicht wie beide der Funktion nodes near coords die x oder Y Werte wiedergeben, sondern weitere Datenwerte, die in der CSV- Datei in einer anderen Spalte abgespeichert sind. In diesem Beispiel sollen an die Datenpunkte die Werte aus der Spalte d an die Datenpunkte geschrieben werden. Mein Beispiel sieht folgendermaßen aus:

Öffne in Overleaf
\documentclass[12pt,a4paper]{article}
\usepackage{pgfplots,siunitx} 
\pgfplotsset{compat=1.9}
\usepgfplotslibrary{
 dateplot,
   fillbetween,
  units
   } 
   \begin{filecontents*}{sensifix.csv} 
       a;b;c;d
       1000;1.295;60;3
       2000;1.295;60;3
       3000;1.957;20;2
       4000;1.957;20;2
       5000;1.957;20;2
       6000;1.957;20;2
       7000;1.957;20;2
       8000;1.957;20;2
       9000;1.957;80;1
       10000;1.957;80;1

    \end{filecontents*}

 \begin{figure}[htb]
   \centering
     \begin{tikzpicture}
      \pgfplotsset{
        width=\textwidth-45pt,
        height = 0.4\textheight,
         legend style={%
      at={(0.99,0.99)},
      anchor=north east
    },
    legend cell align=left,
    ticklabel shift={0.05cm},
    tick label style={/pgf/number format/1000 sep=},
    xmin=1000,xmax=10000,
 }
\begin{axis}[
    grid = major,
    xlabel = {Kosten für den Inverter},
    x unit=\si{Euro},
    xtick={0,2000,...,10000},
    scaled ticks=false,
    ticklabel style={/pgf/number format/.cd,fixed},
    ylabel = {Maximalkapaziät der Batterie},    
    y unit=\si{\kWh},
    ymin=0, ymax=2.5,
  ]
  \addplot[color = blue, mark=*,
            mark options={solid}] table [x=a, y=b,col sep=semicolon] {Sensifix.csv}; coordinates {
            (0,1,3) [3]
        };

  \label{Transmitterlaenge}% keine Umlaute verwenden!!!
\end{axis}
 %
\begin{axis}[
    yticklabel pos=right,% yticklabel auf der rechten Seite
    ylabel = {Gesamtlänge des Transmitters},
    y unit=\si{\meter},
    ymin=0, ymax=125,
    xtick=\empty,% xticks nicht noch einmal zeichnen
  ]
  \addplot[color = red,  mark=*,
            mark options={solid}] table [x=a, y=c,col sep=semicolon]{Sensifix.csv};
  \label{Batteriekapazitaet}          
  \addlegendimage{/pgfplots/refstyle=Transmitterlaenge}
        \addlegendimage{/pgfplots/refstyle=Batteriekapazitaet}
  \addlegendentry{Transmitterlänge}
  \addlegendentry{Batteriekapazität}
  \end{axis}
  \end{tikzpicture}
 \end{figure}
\end{document}

Ich hoffe es versteht jemand das Problem und kann mir weiterhelfen.... irgendwie kann das ja nicht so schwierig sein! ^^

Danke im Voraus

MfG Feidex


08/30/2017 01:50 PM
Achsenbeschriftung zweite X-Achse

Ich habe ein Diagramm erstellt. Funktioniert auch alles bis auf die Beschriftung der rechten X-Achse. Die Beschriftung bleibt einfach auf der linken Seite.

Hier mein Code:

Öffne in Overleaf
\begin{figure}[htb]
    \centering
    \begin{tikzpicture}
    \pgfplotsset{
        width=1\textwidth-45pt,
        height = 1\textheight,
        legend style={%
            at={(0.99,0.99)},
            anchor=north east
        },
        legend cell align=left,
        ticklabel shift={0.05cm},
        tick label style={/pgf/number format/1000 sep=},
        xmin=0,xmax=7000,
        no markers
    }
    \begin{axis}[
    grid = major,
    xlabel = {Stückzahl},
%   x unit=\si{\second},
    ylabel = {Rauheit},
%   y unit=\si{\percent},
    ymin=0, ymax=6,
    enlarge x limits=0.05,
    ]
    \addplot[blue] table [mark=none, x = Zahl,y = Rz ] {V1-73-61.csv};
    \addplot[blue] table [mark=none,blue, x=Zahl,y={create col/linear regression={y=Rz}}] {V1-73-61.csv};
    \label{Viskositaet}% keine Umlaute verwenden!!!
    \end{axis}
    %
    \begin{axis}[
    yticklabel pos=right,% yticklabel auf der rechten Seite
    ylabel = {Dichtheit},
    %y unit=\si{\percent},
    ymin=0, ymax=200,
    enlarge x limits=0.05,
    xtick=\empty,% xticks nicht noch einmal zeichnen
    ]
    \addplot[red] table [mark=none, x = Zahl,y = pressure ] {V1-73-61.csv};
    \addplot[red] table [mark=none,blue, x=Zahl,y={create col/linear regression={y=pressure}}] {V1-73-61.csv};

    \addlegendimage{/pgfplots/refstyle=Viskositaet}
    \addlegendentry{Druckverlust}
    \addlegendentry{Druckverlust Regression}
    \addlegendimage{/pgfplots/refstyle=Viskositaet}
    \addlegendentry{Rauheit}
    \addlegendentry{Rauheit Regression}
    \end{axis}
    \end{tikzpicture}
\end{figure}

Bei mir sieht das dann so aus : alt text

Eine weitere Frage wäre, ob es möglich ist die beiden X-Achsen in Rot und Blau dazustellen?


07/24/2017 06:32 PM
Kurve zeichnen

Ich würde gerne eine Funktion zeichnen lassen und habe folgenden Code in LaTeX, der leider nicht funktioniert. Ich sehe meinen Fehler nicht =(
Hat jemand eine Idee woran es liegen könnte?

Ich hatte zunächst ohne \pgfmathdeclarefunction gearbeitet und die Funktionsgleichung direkt bei \addplot hinzugefügt, hat auch bei anderen Funktionen gut funktioniert, mit der leider nicht.

Außerdem wird mir auf der y-Achse statt 0,008 8*10^(-2) angezeigt, was ich auch nicht möchte. Dachte das Problem löst sich mit \ytick() aber die Schreibweise wird dadurch nicht geändert...

Öffne in Overleaf
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}

\pgfmathdeclarefunction{funktion1}{0}{\pgfmathparse{0.05*(0.1*x)^{-0.5}*exp(-(0.1*x)^{0.5}) }}

\begin{tikzpicture}[baseline=(current axis.south)]
\begin{axis}[
    width=4cm,
    height=8cm,
    axis lines=left,
    xmax=40,
    xmin=0,
    ymin=0,
    ymax=0.12,
    xlabel={$t$},
    ylabel={$f(t)$},
    y label style={at={(current axis.above origin)},rotate=270}
    ]
    \addplot [domain=0:35, thick, red] {funktion1};
\end{axis}
\end{tikzpicture}
\end{document}


07/20/2017 09:24 AM
Texlive und tikz pgf

Use pgf oder tikz library funktioniert nicht. Ich benutze texlive und texstudio. Kann mir jemand helfen?


05/13/2017 04:42 PM
Probleme bei der Erstellung eines Diagrammes (PGFPlots). Funktionsgraphen mit Anzeige der Funktion selbst.

Hallo liebe Community,

ich benötige Hilfe bei der Erstellung eines Diagrammes. Ich habe mehrere Messergebnisse, die ich über \addplot [color = black, only marks] coordinates{...} einfüge.

Zusätzlich möchte ich eine Trendlinie zu den Punkten einfügen. Aktuell habe ich die Trendlinie ebenfalls über \addplot [color = black, mark = none] coordinates{...} eingefügt. Die Trendlinie hab ich aus den Excel und habe somit die gewünschten Punkte berechnet. Allerdings möchte ich jetzt die Trendlinie als Funktion ins Diagramm einbinden und diese auch anzeigen lassen. Aktuell habe ich dafür folgenden Code: \addplot [domain=0.0:2.2, color = black, mark = none] {-5,8552*x+42.654}

Neben dieser Trendlinie möchte ich einen Wahrscheinlichkeitsbereich um diese Trendlinie einfügen. Dieser Bereich hat die jeweils den gleichen Abstand in y-Richtung von der Trendlinie. Außerdem sollen im hinteren Bereich zwei vertikale Linien gezogen werden. Zwischen den beiden Linien soll der Bereich einheitlich farblich hinterlegt werden. alt text

Ich habe folgendes Diagramm erfolgreich erstellen können:

Öffne in Overleaf
    \begin{scheme}[h!] 
            \begin{center}
                \begin{tikzpicture}
                    \begin{axis}[width=16cm, height=7.5cm, xlabel = x, ylabel =  y, title ={Diagramm}, xtick = 
                                            {0,0.2,...,2.2}, xmax=2.4, ytick = {15,20,25,30,...,50}, ymin =  15, ymax = 50]
                    \addplot[color = black, mark = *, only marks ] coordinates{
                        ( 0.00, 44.70)
                        ( 0.00, 42.00)
                        ( 0.00, 41.40)
                        ( 0.98, 37.41)
                        ( 1.01, 36.65)
                        ( 1.45, 34.41)
                        ( 1.35, 34.41)
                        ( 1.69, 29.91)
                        ( 1.23, 31.52)
                        ( 1.20, 36.12)
                        ( 1.21, 34.15)
                        ( 1.45, 37.41)
                        ( 1.44, 38.15)};
                    \addplot[color = black, mark = none] coordinates{
                        ( 0.00, 42.66)
                        ( 2.20, 29.77)};
                    \addplot[color = red, mark = none] coordinates{
                        ( 0.00, 25.00)
                        ( 2.20, 25.00)};
                    \end{axis}      
                \end{tikzpicture}   
                \caption{Beschriftung}
            \end{center}
        \end{scheme}

Kann mir jemand sagen, wie ich das Diagramm relativ einfach umbaue? Die Anzeige der Trendlinien-Funktion kann entweder direkt an dem Graphen erfolgen oder im Diagramm in einer Legende. Bei dem Fall mit der Legende, würde ich eine Anzeige ohne Rahmen außen rum bevorzugen.


04/20/2017 02:58 PM
Farbverlauf Legende TikZ

Ich würde gerne die Ladegradabhängigkeit verschiedener Linien farbig darstellen. Dazu habe ich bisher die Funktion opacity genutzt. Leider ist der Farbverlauf nicht eindeutig genug. Gibt es eine Möglichkeit den Farbverlauf nicht über ein Abschwächen der Farbe, sondern als Farbverlauf hin zu einer anderen Farbe zu realisieren? Beispielsweise von grün zu grau? So wie hier: alt text Die Darstellung der Legende gefällt mir ebenfalls sehr gut. Wie stelle ich diese so dar, dass die ausgefüllten Rechtecke ähnlich groß sind. Dies wäre sehr nützlich, um die Farbe genau erkennen zu können.

Öffne in Overleaf
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepackage{siunitx}
\begin{document}

\begin{figure}
\centering 
\begin{tikzpicture}
\begin{axis}[%
domain=-14:0,
scale=0.85,
width=0.95\linewidth,
height=9cm,
scale only axis,
separate axis lines,
every outer x axis line/.append style={black},
every x tick label/.append style={font=\color{black}\footnotesize},
every y tick label/.append style={font=\color{black}\footnotesize},
xmin=-14,
xmax=0,
ymin=2.5,
ymax=4.2,
xlabel={Strom in $\SI{}{\ampere}$},
ylabel={Spannung in $\SI{}{\volt}$},
ylabel near ticks,
xlabel near ticks,
axis background/.style={fill=white},
scaled ticks=false,
y tick label style={/pgf/number format/.cd,use comma,fixed,precision=3},
legend style={at={(1,0)},anchor=south east}
]
\addlegendimage{white,fill=red,area legend}
\addlegendimage{white,fill=red,opacity=0.9,area legend}
\addlegendimage{white,fill=red,opacity=0.7,area legend}
\addlegendimage{white,fill=red,opacity=0.5,area legend}
\addlegendimage{white,fill=red,opacity=0.3,area legend}
\addlegendimage{white,fill=red,opacity=0.1,area legend}
\addplot+[mark=none, very thick, red] {0.0140*x + 4.18};
\addlegendentry{$\SI{100}{\percent}$}
\addplot+[mark=none, very thick, red, opacity=0.9] {0.0142*x + 4.01};
\addlegendentry{$\SI{90}{\percent}$}
\addplot+[mark=none, very thick, red, opacity=0.7] {0.0146*x + 3.9};
\addlegendentry{$\SI{70}{\percent}$}
\addplot+[mark=none, very thick, red, opacity=0.5] {0.0144*x + 3.7};
\addlegendentry{$\SI{50}{\percent}$}
\addplot+[mark=none, very thick, red, opacity=0.3] {0.014*x + 3.6};
\addlegendentry{$\SI{30}{\percent}$}
\addplot+[mark=none, very thick, solid, red,, opacity=0.1] {0.015*x + 3.4};
\addlegendentry{$\SI{10}{\percent}$}
\end{axis}
\end{tikzpicture}
\label{fig:Test}
\end{figure} 
\end{document}


04/11/2017 05:57 PM
pgfplot Problem zwei x-Achsen benötigt mit vertikaler Verschiebung

Ich würde gerne ein Plot erstellen mit zwei x-Achsen, die vertikal gegeneinander verschoben sind. Darin sollen zwei Signale geplottet werden mit der entsprechenden x-Achse als Nullline. Leider kann ich kein Bild hochladen, deswegen die Zeichnung unterhalb

^
|
|------->
|
|------->

Ist dies möglich? Wenn nein ist es möglich zwei tikzpicture direkt übereinander zu setzen um den gleichen Effekt zu erzielen?


04/04/2017 03:04 PM
CSV Dateien skalieren / multiplizieren

Guten Tag,

ich habe eine frage bezüglich pgfplots, ich habe derzeit das Problem, dass Tikz mir zwar aus den Daten einen Plot generiert, aber in der Achsenbeschriftung nur eine, den Daten entsprechend, richtige Achsenbeschriftung generiert. Jedoch würde ich gerne diese Achsenbeschriftung abändern von Hz, wie es in der CSV Datei beschrieben wurde, in z.B. MHz, sprich die X-Achse *10^6 multiplizieren um so eine andere Achsen skalierung zu bekommen. Mit den Einheiten {700:1000 Mhz}.

Mein Datensatz schaut in dem Fall wie folgt aus:

Öffne in Overleaf
freq[Hz]    Trc1_S21[dB]    
7.000000000000000E+008  -6.559386674151164E-001 
7.015000000000000E+008  -6.399975958886607E-001 
7.030000000000000E+008  -6.360643943569261E-001 
7.045000000000000E+008  -6.431334953077439E-001 
7.060000000000000E+008  -6.307852708079281E-001 
7.075000000000000E+008  -6.339452617492234E-001

Und mein LaTEX Code wie folgt:

Öffne in Overleaf
\centering
\begin{tikzpicture}
    \begin{axis}[
        width=0.9\textwidth,
        xlabel={$Mhz$},
        ylabel={$dB$},
        enlarge x limits=0.01,
        legend entries={$S21$}]
    \addplot table [smooth] {data1.csv};
    \end{axis}
\end{tikzpicture}

Vielen Dank


04/02/2017 04:43 PM
pgfplots-Graph wird ruiniert, wenn +1 ergänzt wird

Warum ruiniert es mir den Graph, sobald ich an die Funktion +1 dazuschreibe?

Öffne in Overleaf
\newcommand*\funktion[1]{(#1)^2 +1}

So geht es:

Öffne in Overleaf
\newcommand*\funktion[1]{(#1)^2}
Öffne in Overleaf
\documentclass[margin=5mm]{standalone} 
\usepackage[ngerman]{babel}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document} 
\begin{tikzpicture}[font=\footnotesize] 
% Dargestellte Funktion
\newcommand*\funktion[1]{(#1)^2 +1} %* sin(deg(#1))^3
% Näherungsweise Ableitung / Tangentensteigung der Funktion
\newcommand*\ableitung[1]{(\funktion{#1+0.01}-\funktion{#1})/0.01}
% Tangente an die Funktion
\newcommand*\tangente[2]{\ableitung{#2}*(#1-#2)+\funktion{#2}}

\begin{axis}[axis lines=middle, enlargelimits,
xlabel=$x$,xlabel style={anchor=north},xtick=\empty,
ylabel=$y$,ylabel style={anchor=east},%ytick=\empty,
x axis line style = {-latex}, y axis line style = {-latex},
]
\addplot[domain=-3:3,samples=200]{\funktion{\x}};
% Tangente zeichnen in T(u, f(u))
\pgfmathsetmacro{\u}{1} % Berührstelle u eingeben
\pgfmathsetmacro{\Laenge}{1.25} % Länge der Tangente eingeben
% Tangente
\addplot[domain=\u-\Laenge:\u+\Laenge, red]{\tangente{\x}{\u}};
% Koordinaten des Berührpunktes und seiner Fusspunkte
\coordinate (P) at (axis cs: \u,{\funktion{\u}}) ;
\coordinate (Q) at (axis cs:0,{\funktion{\u}}) ;
\coordinate (R) at (axis cs:\u,0) ;
\draw[red,dotted] (P) -- (Q) node[left] {$f(u)$} ;
\draw[red,dotted] (P) -- (R) node[below] {$u$} ;
% Berührpunkt T(u, f(u))
\draw[red, fill=white] (axis cs: \u, {\funktion{\u}}) circle[radius=1.5pt] node[above, red] {$T$};
\end{axis}
\end{tikzpicture}

\end{document}


03/27/2017 07:10 AM
Pgfplots Legende Einträge ausblenden

Wie kann ich in TikZ/pgfplots einzelne Legendeneinträge ausblenden?


03/25/2017 09:25 PM
Einstellung des Skalenverhältnisses in pgfplots

Ein Koordinatensystem soll eine vorgegebene Breite, vorgegebene Intervalle für x- und y-Achse und ein vorgegebenes Verhältnis der Skalen von x- und y-Achse haben. Hierfür gibt es in pgfplots die Optionen width, xmin, xmax, ymin, ymax und unit vector ratio.

Ich habe festgestellt, dass ein Verhältnis von 6,5:1 anders behandelt wird als ein Verhältnis von 13:2. Außerdem wird auch die Diagrammbreite durch den Wechsel der Schreibweise beeinflusst. Sollte man nicht eigentlich in beiden Fällen das gleiche erhalten?

Öffne in Overleaf
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest,axis lines=middle,grid}
\usepackage{blindtext}

\begin{document}

\blindtext
\begin{center}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=2.05,ymin=-1.3,ymax=1.3,width=0.8\linewidth,unit vector ratio={6.5 1}]
\addplot[samples=200,domain=0:2.05] {sin(360*x)};
\end{axis}
\end{tikzpicture}
\end{center}
\blindtext
\begin{center}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=2.05,ymin=-1.3,ymax=1.3,width=0.8\linewidth,unit vector ratio={13 2}]
\addplot[samples=200,domain=0:2.05] {sin(360*x)};
\end{axis}
\end{tikzpicture}
\end{center}

\end{document}


03/21/2017 12:05 PM
Zoomfunktion - separate Achsenbeschriftung?

Ich habe von hier den Code übernommen und angepasst: http://texwelt.de/wissen/fragen/6593/pgfplot-mit-zoomfunktion

Das funktioniert auch ganz gut. Da meine x-Achse allerdings Daten als Wert hat, und er alle in xtick={2013-01-01,2013-03-15,2013-03-23,2013-03-30,2013-06-01,2013-12-01}, plottet, überschneiden sich die Werte in Abb. a. 1.

  1. Frage: Wie kann ich das umgehen? An der Stelle links, müsse eigentlich nur der 1.1., 1.6. und 31.12. stehen. Übermalen mit einer weißen Box ginge zur Not auch ;) Nur wie? Gelöst, siehe unten
  2. Frage: Wie kann ich die Option scaled y ticks=base 10:-3 hier integrieren? Ich weiß nicht so recht, an welche Stelle das jetzt muss. Oder anders gefragt: Was muss ich hier yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},ändern, um einmal das 10^3 auf der Achsen (also einmal oben links) zu erhalten? (Noch nicht gelöst)

Code:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}
\usepgfplotslibrary{fillbetween}
\usepgfplotslibrary{dateplot} 
\usepackage{subcaption}
\usepackage{filecontents}
\begin{filecontents}{datensuperfein.dat}
x   y
...
\end{filecontents}
\begin{document}

\begin{figure}
  \centering
  \begin{tikzpicture}[
    ausschnitt/.style={blue!50!red}
  ]
    % Befehl für Teilbeschriftungen
    \newcommand\teilbeschriftung[1]{
      \node[below,text width=.45\textwidth] 
        at (current axis.outer south){\subcaption{#1}};
    }
    % Einstellungen für Achsen
    \pgfplotsset{
      myaxis/.style={
        width=.45\textwidth,
        height=0.3\textheight,
        date coordinates in=x,
        xticklabel=\day.\month.,
        xtick={2013-01-01,2013-03-15,2013-03-23,2013-03-30,2013-06-01,2013-12-01},
        ylabel=y,
        yticklabel style={/pgf/number format/.cd,fixed,fixed zerofill,precision=1},
      }
    }
    %
    \begin{axis}[
      myaxis,
      ymin=0,
      ymax=1200,
      %%%%%%%%%%%%HIER MUSS DSA REIN
      xtick={2013-01-01,2013-06-01,2013-12-01},
      %%%%%DANN GEHT ES
      xmin={2013-01-01},
      xmax={2013-12-01},
        ]
      \addplot [ycomb,no markers]table[x=x,y=y]{datensuperfein.dat};
      \draw[ausschnitt]
        (axis cs:{2013-03-15},600)coordinate(ul)--
        (axis cs:{2013-03-30},600)coordinate(ur)--
        (axis cs:{2013-03-30},1050)coordinate(or)--
        (axis cs:{2013-03-15},1050)coordinate(ol)--
        (axis cs:{2013-03-15},600) -- cycle;
      \end{axis}
      \teilbeschriftung{Beschriftung 1}
      % Ausschnitt
      \begin{axis}[
        xshift=.5\textwidth,
        myaxis,
        axis line style=ausschnitt,
        xmin={2013-03-15},
        xmax={2013-03-30},
        ymin=600,ytickmin=450,
        ymax=1050,
      ]
      \addplot [no markers]table [x=x,y=y] {datensuperfein.dat};
      \end{axis}
      \teilbeschriftung{Beschriftung 2}
      % Verbindungslinien
      \draw[ausschnitt]
        (current axis.north west)--(or)
        (current axis.south west)--(ur);
    \end{tikzpicture}
    \caption{Beschriftung insgesamt}
  \end{figure}
\end{document}

alt text


03/19/2017 10:14 PM
Fläche schraffieren (oder füllen) in Plot (Update MWE)

Ich habe hier ein Plot aus einer Datenreihe gezeichnet:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{patterns}
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
xmin=0,
ymin=0,
xmax=20000,
scaled y ticks=base 10:-3,
]
\addplot[mark = none, name path=A] table from {mwe.txt};
   \begin{scope}[green]
      \draw[black, name path=B] (axis cs:0,599) -- (axis cs:2701,599);
       \end{scope}

\addplot[green] fill between[of=A and B,
split,
every segment no 0/.style=
{pattern color=gray!50,
pattern=north east lines}];
%every segment no 1/.style=
%{pattern=north west lines}];
\end{axis}
\end{tikzpicture}

\end{document}

alt text

Hier ist die Datei: https://1drv.ms/t/s!AFcQ3ZGfWrfqgZxL

Ich möchte jetzt folgendes: Es soll eine Linie von, sagen wir mal y=600 bis zum Plot gezeichnet werden. Und dieses Dreieck, was diese horizontale Linie aufspannt, soll ausgefüllt oder irgendwie schraffiert werden.

EDIT: Habe es soweit geschafft. Allerdings zeichnet er weiter in grün. Das will ich natürlich nicht. Ich möchte nur die schraffierte Fläche. Was tun?

EDIT2: Wenn ich unter \addplot[green] aus "green", "white" geht es. Naja, was heißt es geht. Man sieht die Fläche nicht mehr ;)

Wieso zeichnet er überhaupt die Fläche? Ich habe doch die Zeilen mit segment no 1... auskommentiert.