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

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.


03/17/2017 12:49 PM
Label neben Funktion wird nicht dargestellt

Versuche ein Label recht neben allen Fkt. zu stellen. Es wird mir rein gar nichts angezeigt.

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
%title=xxx,
xmin=0, 
xmax=3, 
ymin=0, 
ymax=2, 
legend pos=outer north east,
domain=0:3, samples=100]
    \addplot[no markers, blue] { 1-x^4 } node[right,pos=0.5]{TEST};
\addplot[no markers, blue] { 1.5-x^4 } node[right,pos=0.5]{TEST};
    \addplot[no markers, red] { 2-x^4 } node[right,pos=0.5]{TEST};
    %\addplot[no markers, Red] { 1-0.5*x^4 };
    %\addplot[no markers, Black] { 1-0.05*x^4 };
    %\addplot[no markers, Green] { 1-0.01*x^4 };
\end{axis}
\end{tikzpicture}
\end{document}

Wieso?


03/16/2017 06:49 PM
Achsenbeschriftung y-Achse x*10^3

Ich möchte die y-Achse einheitlich mit einzelnen Ziffern (z.B. 1.213 * 10^3) beschriften. Das 10^3 soll oben einmal an die Achse geschrieben werden (so wie es auch automatisch gemacht wird). Allerdings soll das bereits ab 10^3 (kilo) geschehen und nicht erst bei 10^5.

So ganz klar ist mir die Syntax da nicht. Folgendes habe ich probiert, was mit einem unknown control sequence abbricht:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
     \addplot[no markers, blue, domain=0:10000, samples=10,yticklabel style={/pgf/number format/.cd,\pgfmathprintnumber[
          sci]},
        restrict x to domain=0:5000,% but this filter the results anyway
    restrict y to domain=0:100000,
      samples=300 
       ] { 93231-3.552e-10*x^5};
 \node[ coordinate, pin = {[rotate=90]right:1000} ] at (axis cs:1000,10000) { };

      \end{axis}
\end{tikzpicture}

\end{document}


03/16/2017 04:28 PM
Punkt in Graph beschriften mit Datum als x-Achse

Ich möchte in einem Graph ein Extremwert beschriften. In einem normalen Graph klappt das ganz gut:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
 \addplot[no markers, blue, domain=0:10000, samples=10, % you can make it larger 
        restrict x to domain=0:5000,% but this filter the results anyway
    restrict y to domain=0:100000,
      samples=300 
       ] { 93231-3.552e-10*x^5};
 \node[ coordinate, pin = {[rotate=90]right:1000} ] at (axis cs:1000,10000) { };

      \end{axis}
\end{tikzpicture}

\end{document}

Nur, was mache ich, wenn die x-Achse aus Datumsangaben in der Form JJJJ-MM-TT besteht? Wenn ich z.B. 2017-01-01 eingebe (axis cs:100,2017-01-01) erhalte ich eine Menge (mir) nichts sagender Fehlermeldungen.


03/15/2017 10:05 PM
Funktion lässt sich nicht plotten

Ich versuche diese Funktion in ein Graph einzubinden. Allerdings gelingt es mir nicht mal, die Funktion ohne alles zu generieren:

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
        \begin{axis}[grid=major,ymax=2500,xmax=2500]
          \addplot[no markers, blue, restrict y to domain=0:1714, samples=30000] { 2412 - 2.795e-10*(x^4)};
        \end{axis}
\end{tikzpicture}

\end{document}

Kann es sein, dass es mit der absurd kleinen Zahl 2.795e-10 zu tun hat? Wie kann ich die Funktion dennoch plotten? -> funktioniert! Siehe unten

EDIT GnuPLOT läuft nicht. -> funktioniert nicht.

Öffne in Overleaf
\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage[normalem]{ulem} 
\usepackage{tikz} 
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}

\begin{tikzpicture}
        \begin{axis}[grid=major,ymax=2450,xmax=2500]
          \addplot[no markers, blue,restrict y to domain=0:1714, 
            samples=30000] gnuplot [domain=0:2500] { 2412 - 2.795e-10*(x^4)};
        \end{axis}
\end{tikzpicture}

\end{document}

Läuft nicht:

Öffne in Overleaf
! Package pgfplots Error: Sorry, the gnuplot-result file 'MWE2funktion.pgf-plot
.table' could not be found. Maybe you need to enable the shell-escape feature?

Shell-escape ist aber drin:

alt text

Und GNUplot befindet sich im Pfad:

alt text


03/15/2017 08:28 AM
TeX capacity exceeded - nein, der Datensatz scheint i.O.


Duplikat zu TeX Capacity Exceeded bei Verwendung von pgfplots


Ich versuche einige Plots zu erstellen. Dazu wird jeweils eine CSV gelanden. Die CSV hat vier Spalten, Datum, Wert A, Wert B und Wert C. Sie hat 365 Zeilen. Ich möchte jetzt jeweils ein x,y-Plot erstellen mit den Werten A und B.

Öffne in Overleaf
\begin{tikzpicture}
        \begin{axis}[grid=major,
          width=\textwidth*0.6,
          height=\textwidth*0.6,
          %ymax=4500,
          %xmax=1500,
          %ymin=0,
          %xmin=0,
          %legend style={minimum height=1cm,legend pos=north east},
          legend pos=outer north east
          ]
          \addlegendimage{only marks,red}
          \addlegendimage{only marks, blue}
          \addplot [only marks,color=red] table [col sep=semicolon,x
index=1, y index=2] {dateieins.csv};
          \addplot [only marks,color=blue] table [col sep=semicolon,x
index=1, y index=2] {dateimax.csv};
          \legend{$\uwave{\,KG}_{ein}^{S}$,$g^k$};
        \end{axis}
\end{tikzpicture}

Und das klappt drei mal hervorragend. Nur zwei wollen nicht durchlaufen. Ich erhalte jedes mal: Öffne in Overleaf

Öffne in Overleaf
! TeX capacity exceeded, sorry [main memory size=20000000].

Dann habe ich folgendes in die Präambel dazu geschrieben:

Öffne in Overleaf
\usepgfplotslibrary{external}
\tikzexternalize
\tikzsetexternalprefix{external_figs/}

und in texmaker Öffne in Overleaf

Öffne in Overleaf
--extra-mem-bot=100000000 --extra-mem-top=100000000

hinzugefügt. Dann erhalte ich zwar keine TeX capacity Fehlermeldung mehr, sondern folgende: Öffne in Overleaf

Öffne in Overleaf
! Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-e

Was kann ich tun? Die CSVs sehen alle gleich aus. Die Werte in den einzelnen Zeilen variieren von 0 bis 100000. Alle Plots laufen so durch, nur eben zwei nicht (und das sind auch die, mit den kleineren Werte, zw. 0 und 3000, daher habe ich oben auch x/ymin/max ausgeblendet, weil ich dachte, dass es eventuell daran liegt.

Und es liegt auch nicht an den Datensätzen. Die sind in allen Fällen ziemlich identisch. Es gibt auch nur eine Nachkommastelle!

So sieht exemplarisch eine Zeile aus der CSV aus, die problemlos durchläuft (ich habe mal pi mal Dauemen die längste Zeile genommen):

2012-01-01; 1234.452; 45678.4; 45678.852 (kein Problem)

Er zeichnet nur die 2. und 3. Spalte.

Und hier die längste Zeile der Problem-CSV:

2012-01-11; 123.5; 2345.0; 1333.5 (TeX Capacity Exceeded!)

So sehen meine Einstellungen aus in Texmaker aus:

Öffne in Overleaf
pdflatex -synctex=1 -interaction=nonstopmode --enable-write18 -shell-escape --extra-mem-bot=100000000 --extra-mem-top=100000000 %.tex

Ich kann dazu schlicht kein Minimalbeispiel liefern. 3/5 laufen ja durch und die Daten in den CSVs kann ich nicht einfach hochladen.


03/15/2017 12:54 AM
TeX Capacity Exceeded bei Verwendung von pgfplots


Duplikat zu pgfplot TeX capacity exceeded


Ich versuche einige Plots zu erstellen. Dazu wird jeweils eine CSV gelanden. Die CSV hat vier Spalten, Datum, Wert A, Wert B und Wert C. Sie hat 365 Zeilen.

Ich möchte jetzt jeweils ein x,y-Plot erstellen mit den Werten A und B.

Öffne in Overleaf
\begin{tikzpicture}
        \begin{axis}[grid=major,
          width=\textwidth*0.6,
          height=\textwidth*0.6,
          %ymax=4500,
          %xmax=1500,
          %ymin=0,
          %xmin=0,
          %legend style={minimum height=1cm,legend pos=north east},
          legend pos=outer north east
          ]
          \addlegendimage{only marks,red}
          \addlegendimage{only marks, blue}
          \addplot [only marks,color=red] table [col sep=semicolon,x
index=1, y index=2] {dateieins.csv};
          \addplot [only marks,color=blue] table [col sep=semicolon,x
index=1, y index=2] {dateimax.csv};
          \legend{$\uwave{\,KG}_{ein}^{S}$,$g^k$};
        \end{axis}
\end{tikzpicture}

Und das klappt drei mal hervorragend. Nur zwei wollen nicht durchlaufen. Ich erhalte jedes mal:

Öffne in Overleaf
! TeX capacity exceeded, sorry [main memory size=20000000].

Dann habe ich folgendes in die Präambel dazu geschrieben:

Öffne in Overleaf
\usepgfplotslibrary{external}
\tikzexternalize
\tikzsetexternalprefix{external_figs/}

und in texmaker

Öffne in Overleaf
--extra-mem-bot=100000000 --extra-mem-top=100000000

hinzugefügt. Dann erhalte ich zwar keine TeX capacity Fehlermeldung mehr, sondern folgende:

Öffne in Overleaf
! Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-e

Was kann ich tun? Die CSVs sehen alle gleich aus. Die Werte in den einzelnen Zeilen variieren von 0 bis 100000. Alle Plots laufen so durch, nur eben zwei nicht (und das sind auch die, mit den kleineren Werte, zw. 0 und 3000, daher habe ich oben auch x/ymin/max ausgeblendet, weil ich dachte, dass es eventuell daran liegt.


03/13/2017 01:22 PM
Package PGF Math Error: Unknown operator `x' or `x^'

Ich versuche in ein Bild mehrere, skalierte Fkt. unterzubringen:

Öffne in Overleaf
\begin{tikzpicture}
\begin{axis}[%
title=xxx,
xmin=0, 
xmax=1, 
ymin=0, 
ymax=1, 
legend pos=outer north east,
domain=0:1]
    \addplot[no markers, blue] { 1-x^4 };
    \addplot[no markers, red] { 1-0.5x^4 };
    \addplot[no markers, black] { 1-0.05x^4 };
    \addplot[no markers, green] { 1-0.005x^4 };
\end{axis}
\end{tikzpicture}

Leider erhalte ich eine Fehlermeldung

Öffne in Overleaf
! Package PGF Math Error: Unknown operator `x' or `x^' (in ' 1-0.5x^4 ')

Muss ich hier jeweils ein andere "x" nehmen?


03/07/2017 06:39 AM
Math-Mode in ticklabels, tikz

Ich brauche, dass die xticklabels mathematisch dargestellt werden, so dass die Zahlen nach den (...) im label als Hochzahlen dargestellt werden.

Öffne in Overleaf
    \documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{positioning}

\usepackage{pgfplots} % Use tikzpicture for the diagrams
\usetikzlibrary{pgfplots.statistics}
\usetikzlibrary{patterns} 
\usetikzlibrary{calc}
\usetikzlibrary{spy}
\pgfplotsset{compat=1.12}
\usepackage{mathtools}
\begin{document}

    \newlength\figureheight
    \newlength\figurewidth  
    \setlength\figureheight{3.75cm}
    \setlength\figurewidth{8.0cm}

% Preamble: \pgfplotsset{width=7cm,compat=1.14}\usepgfplotslibrary{statistics}
\definecolor{RYB1}{RGB}{97,230,1}
\definecolor{RYB2}{RGB}{200,150,250}
\definecolor{RYB3}{RGB}{230,97,1}

\pgfplotscreateplotcyclelist{colorbrewer-RYB1}{
{RYB1!50!black,fill=RYB1},
{RYB1!50!black,fill=RYB1},
{RYB1!50!black,fill=RYB1}} %Do not add a comma after the last element of the list!

\begin{tikzpicture}

%\begin{groupplot}
\begin{axis} [
width=\figurewidth,
height=\figureheight,
xtick={1,2,3,4,5},
xticklabels={(256,256)0,(512,512)0,(1,4,8,14)1,(1,4,8,355)1,(2,6,12,116)1},
ymin = 960,
ymax = 1100,
xlabel={Tube configuration},
x tick label style={rotate=45,anchor=east},
boxplot/draw direction=y,
cycle list name=colorbrewer-RYB1,
title style={font=\bfseries, yshift=0ex},
align =center,
title={Performance comparison of\\ on-the-fly and reference solver\\ on phase two nodes},
]

% 256 / 256 
\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
data\\
962.9202501\\
963.1869383\\
};
\addlegendentry{1 Thread};

% 512 / 512 
\addplot+[boxplot={draw position=2}]
table[row sep=\\,y index=0] {
data\\
1028.056863\\
1028.794504\\
1028.877725\\
};

% 1 / 14 / 8 / 4 
\addplot+[boxplot={draw position=3}]
table[row sep=\\,y index=0] {
data\\
969.8845894\\
971.1424572\\
972.0283485\\
};

% 1 / 4 / 8 / 355 
\addplot+[boxplot={draw position=4}]
table[row sep=\\,y index=0] {
data\\
983.0304642\\
981.4213649\\
981.7510523\\
};

% 2 / 6 / 12 / 116 
\addplot+[boxplot={draw position=5}]
table[row sep=\\,y index=0] {
data\\
1018.936179\\
1019.38764\\
1019.95342\\
};

\end{axis}

\end{tikzpicture}% Preamble: \pgfplotsset{width=7cm,compat=1.14}\usepgfplotslibrary{statistics}
\end{document}


03/06/2017 07:46 AM
Wie kann ich in tikz die Y-Achse ungleich skalieren?

Folgendes Problem: Meine Daten, die ich als Punkte in einem Diagramm visualisieren möchte, sind um verschiedene Werte gebündelt. Alle liegen entweder zwischen 45-60, 520-560 und 930-990. Sowohl logarithmisch, als auch linear, finde ich es nicht übersichtlich genug.

Ist es irgendwie möglich, die y-Achse in drei Abschnitte zu teilen, die diesen Intervallen entsprechen und den Rest zu ignorieren (als "..." ausblenden?).

Minimalbeispiel, wie es bisher aussieht:

Öffne in Overleaf
\documentclass{minimal}
\usepackage{tikz}
  \usetikzlibrary{positioning}

\usepackage{pgfplots} % Use tikzpicture for the diagrams
\usetikzlibrary{pgfplots.statistics}
\usetikzlibrary{patterns} 
\usetikzlibrary{calc}
\usetikzlibrary{spy}
\pgfplotsset{compat=1.12}
\begin{document}

% Preamble: \pgfplotsset{width=7cm,compat=1.14}\usepgfplotslibrary{statistics}
\definecolor{RYB1}{RGB}{97,230,1}
\definecolor{RYB2}{RGB}{200,150,250}
\definecolor{RYB3}{RGB}{230,97,1}
\pgfplotscreateplotcyclelist{colorbrewer-RYB}{
{RYB1!50!black,fill=RYB1},
{RYB2!50!black,fill=RYB2},
{RYB3!50!black,fill=RYB3}} %Do not add a comma after the last element of the list!

\begin{tikzpicture}
\begin{axis} [
width=10cm,
height=10cm,
xtick={1,2,3,4,5},
xticklabels={(256,256),(512,512),(1,4,8,14),(1,4,8,355),(2,6,12,116)},
ymin = 0,
ymax = 1100,
%ymode = log,
xlabel={Tube configuration},
x tick label style={rotate=45,anchor=east},
ylabel={Factor of runtime overhead},
ytick={0,50,100,...,1200},
boxplot/draw direction=y,
cycle list name=colorbrewer-RYB,
title style={font=\bfseries, yshift=5.5ex},
align =center,
title={Performance comparison of on-the-fly and reference solver on phase one nodes},
]

% 256 / 256 
\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
data\\
918.5634743\\
918.909506\\
918.5904378\\
914.7588818\\
};

\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
draw position=1.0,
data\\
236.2160316\\
234.5532821\\
231.726608\\
235.2376498\\
};

\addplot+[boxplot={draw position=1}]
table[row sep=\\,y index=0] {
draw position=1.0,
data\\
63.25559605\\
63.2718865\\
63.25087744\\
62.99359808\\
};

\end{axis}
\end{tikzpicture}
\end{document}

Das ganze soll nachher ungefähr so aussehen (dann am besten auch boxplots statt Punktmengen):

alt text


03/02/2017 03:23 PM
TikZ/pgfplots: Datum als Achsenbeschriftung ruft Fehler hervor

Ich möchte gerne mit pgfplots eine Lastkurve zeichnen. Das Problem: Es sind Jahresdaten, als eine Menge an Zeilen.

Ich habe die Excel-Datei bereits aufgearbeitet und als CSV (Kommatrennung) exportiert. So sieht beispielhaft eine Zeile aus:

Öffne in Overleaf
1/1/2017,2:45:00,0,
2/1/2017,14:30:00,0.038782319,

Ich möchte jetzt einen Plot in TeX erstellt haben, der auf der x-Achse vom 1. Januar bis 31. Dezember den Kurvenverlauf der Werte in der dritten Spalte (0 und 0.038782319) zeichnet. Die Uhrzeit ist nicht wichtig.

LaTeX spuckt sodann einen Fehler aus

! Package PGF Math Error: Could not parse input '1/1/2017' as a floating pointnumber, sorry.

War mir irgendwie klar, dass er damit Probleme hat.

Ein bisschen Recherche betrieben und

Öffne in Overleaf
\usepgfplotslibrary{dateplot}

eingebunden. Zusätzlich noch die CSV umformatiert in

Öffne in Overleaf
2017-01-01,0
2017-01-01,0.037531276

Leider immer noch derselbe Fehler.


02/19/2017 06:36 PM
Wie zeichne ich mehrere Koordinatensysteme bei einem 3D pgfplot gleichzeitig?

alt text

Hier verwende ich das Hauptkoordinatensystem nur als Hilfslinien bzw. als 3D-Gitternetzlinien.

Das eigentliche KoSy habe ich dann improvisiertermaßen selbst gezeichnet.

Geht das evtl. besser?

Öffne in Overleaf
\documentclass[varwidth, margin=2.5pt]{standalone}
\usepackage[ngerman]{babel}

\usepackage{pgfplots}
    \pgfplotsset{compat=1.8}
%   \pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}[>=latex] 
\begin{axis}[
%axis  lines = middle,
title={Betragsfl\"ache ~ $z \mapsto |f(z)| = x^2$},
view={-45}{45}, %view = {azimuth}{elevation} % default: {25}{30}
x dir = reverse,
%extra x axis, 
outer axis line style={ultra thin, lightgray},
inner axis line style={ultra thin, lightgray}, % hat Effekt?
zmin=0, zmax = 19, 
xmajorgrids,
ymajorgrids,
zmajorgrids,
%xlabel={$x$},
%ylabel={$y$},
%zlabel={$z$},
ztick={0,4,...,19},
xticklabels=\empty, 
yticklabels=\empty, 
zticklabels=\empty, 
]
\addplot3[mesh,
draw=black,
domain=-4:4,
very thin,
] {x^2};

% EXTRA Koordinatensystem
\draw[->, thick, shorten >=-2.0cm](axis cs: 0,0,0) -- (axis cs: 0,0,16) node[left, yshift=1.25cm, fill=white]{$|f(z)|$};
\draw[->, thick,](axis cs: -4,0,0) -- (axis cs: 4,0,0) node[very near end, above]{$x$};
\draw[->, thick,](axis cs: 0,4,0) -- (axis cs: 0,-4,0) node[very near end, below, xshift=-1.5em, yshift=-0.5em]{$y$};

\end{axis}
\end{tikzpicture}

\end{document}


02/18/2017 08:23 PM
Wie erreiche ich bei einem 3D pgfplot, dass die x-Achse waagrecht dargestellt wird?

alt text

Öffne in Overleaf
\documentclass[varwidth, margin=2.5pt]{standalone}
\usepackage[ngerman]{babel}

\usepackage{pgfplots}
    \pgfplotsset{compat=1.8}
%   \pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture} 
\begin{axis}[
title={Betragsfl\"ache},
outer axis line style={ultra thin, lightgray},
inner axis line style={ultra thin, lightgray}, % hat Effekt?
zmax = 19, 
xmajorgrids,
ymajorgrids,
zmajorgrids,
xlabel={$x$},
ylabel={$y$},
zlabel={$z$},
ztick={0,4,...,19},
xticklabels=\empty, 
yticklabels=\empty, 
%zticklabels=\empty, 
]
\addplot3[mesh,
draw=black,
domain=-4:4,
very thin,
] {x^2};

\end{axis}
\end{tikzpicture}

\end{document}


02/18/2017 08:20 PM
Wie vertausche ich x und y Achse bei einem 3D pgfplot?

Ich möchte, dass die positive Zählrichtung der x-Achse schräg nach vorne geht.

alt text

Öffne in Overleaf
\documentclass[varwidth, margin=2.5pt]{standalone}
\usepackage[ngerman]{babel}

\usepackage{pgfplots}
    \pgfplotsset{compat=1.8}
%   \pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture} 
\begin{axis}[
title={Betragsfl\"ache},
outer axis line style={ultra thin, lightgray},
inner axis line style={ultra thin, lightgray}, % hat Effekt?
zmax = 19, 
xmajorgrids,
ymajorgrids,
zmajorgrids,
xlabel={$x$},
ylabel={$y$},
zlabel={$z$},
ztick={0,4,...,19},
xticklabels=\empty, 
yticklabels=\empty, 
%zticklabels=\empty, 
]
\addplot3[mesh,
draw=black,
domain=-4:4,
very thin,
] {x^2};

\end{axis}
\end{tikzpicture}

\end{document}