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

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}


02/18/2017 07:56 PM
Wie erreiche ich bei 3D pgfplots Bildern, dass die z-Achse an der Grundebene beginnt?

alt text

Wie schaffe ich, dass der Punkt ganz links unten auch (0,0,0) ist?

Ö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,
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/05/2017 10:48 AM
Achsenbezeichnung bei Verwendung von scale

In dem Thread wurde mit viel Aufwand eine Lösung angegeben, mit der die Platzhalter x und y sauber an der Pfeilspitze stehen bleiben. Wieso pflanzt es mir x und y wieder irgendwo in die Landschaft, sobald ich \begin{tikzpicture}[scale=0.75,] verwende?

alt text

Öffne in Overleaf
\documentclass{article}
 \usepackage[ngerman]{babel}

\usepackage{tikz}
%   \usetikzlibrary{matrix}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}[scale=0.75,]%transform shape
\begin{axis}[
%width=4cm, height=4cm, 
% allgm.:
xmin = -1.25, xmax = 1.25,
ymin = -1.25, ymax = 1.25,
samples = 200,
axis lines = middle,
axis equal,
axis line style = {-latex}, % Pfeilspitzen
% x-Achse
xlabel = {$x$},
%xlabel style= right,
xtick={-1,...,1},
%y-Achse
ylabel = {$y$},
%ylabel style= {above}
ytick={-1,...,1},
% Achsenbezeichnung 
xlabel style={
          yshift=-.5*\pgfkeysvalueof{/pgfplots/major tick length},
          anchor=north east,
          inner xsep=0pt
        },
        ylabel={\normalsize $y$},
        ylabel style={
          xshift=-.5*\pgfkeysvalueof{/pgfplots/major tick length},
          anchor=north east,
          inner ysep=0pt
        },
]
% Funktionen
% Kreis oben
\addplot [domain = -1:1, smooth, red, thick]{(1 - x^2)^0.5};
% Kreis oben
\addplot [domain = -1:1, smooth, red, thick]{-(1 - x^2)^0.5};
% Strecke / Sekante
\draw[thick] (axis cs:1,0) -- (axis cs: 0,1) node[near start, below]{$s$};
\end{axis}
\end{tikzpicture}

\end{document}


01/09/2017 12:20 PM
Unterschiedliche Marker in einem Graphen

ich möchte für bestimmte Punkte (willkürlich - also nicht jeder n-te) in meinem Plot andere Marker (die sich von den restlichen in Farbe und Form abheben) verwenden.

Ich arbeite mit der colorlist:

Öffne in Overleaf
\begin{filecontents*}{data.txt}
b c
1 2
2 4
3 6
4 8
5 10
6 12
7 14
8 16
9 18
10 20
\end{filecontents*}
\documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[]{pgfplots}
\pgfplotsset{compat=1.14}
\usepackage{siunitx}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{lipsum}

\pgfplotscreateplotcyclelist{mycolorlist}{
blue!01!green,every mark/.append style={fill=blue!10!black},mark=+
}

\begin{document}
    \begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
        grid=both,
        width=12cm, 
        height=9cm,
        xtick pos=left,
        ytick pos=left,
        xlabel={R}, ylabel={Z}, 
        legend style={at={(0.02,0.98)},anchor=north west,cells={anchor=west}},
        legend style={font=\footnotesize},
        cycle list name=mycolorlist,
        ]
        \addplot table [x=b,y=c]{data.txt};

        \legend{Z}
        \end{axis}

    \end{tikzpicture}
    \end{figure}
    \end{document}

Beispielsweise soll z.b der 3. Messpunkt (3 6) ein schwarzes "x" als Marker bekommen und Messpunkt 7 (7 14) ein blaues Dreieck. Ist sowas möglich?


12/28/2016 11:49 AM
Säulendiagramm mit TikZ

Hallo Zusammen,

ich arbeite noch nicht lange mit LaTeX und versuche gerade ein Säulendiagramm zu erstellen. Hierzu habe ich 2 verschiedene Herangehensweisen versucht, welche mir aber jeweils Probleme machen. Wenn ich mit das Diagramm mit TikZ erstelle, welches mir vom Layout her sehr gut gefällt bekomme ich es leider nicht hin die y-Achse mit den gewünschten Werten zu beschriften (diese wären 100,200,300).

Erstelle ich mein Problem mit pgfplots, so schneiden die Hilfslinien meine Balken und bei Rotation der x-Achsenbeschriftung verschiebt sich diese.

Öffne in Overleaf
\begin{figure}
\begin{tikzpicture}
\centering 
%\newcommand{\balkenbreite}{10pt} 
\begin{axis}[ybar, 
    bar width=20pt, % Balken gestapelt 
    % ursprüngliche y-Werte unterhalb der Balken: 
   nodes near coords,nodes near coords align=above,point meta=rawy, 
    axis x line=bottom, axis y line=left,% Achsen nur unten und links
    ylabel=$kWh/m^2a$, % Beschriftung der Achsen 
    ymin=0,
    ytick={0,50,100,150,200,250,300},% minimaler y-Wert ist 0  
    enlargelimits=auto,% Vergrößern der Ränder des Diagramms 
    % Ausgabe der x Werte ohne Tausendermarkierung@ 
    xlabel= Sanierter Geb\"audeteil,
    symbolic x coords ={0,Unrenoviert,Fenster,H\"ulle,Bodenplatte,Heizung,8},
    x tick label style={rotate=90}]
\addplot[fill=green] coordinates {(Unrenoviert,220.6)(Fenster,219.26)(H\"ulle,197.67)(Bodenplatte,167.9)(Heizung,40)};
\draw[very thin,color=gray]({axis cs:0,50}) -- ({axis cs:8,50});
\draw[very thin,color=gray]({axis cs:0,100}) -- ({axis cs:8,100});
\draw[very thin,color=gray]({axis cs:0,150}) -- ({axis cs:8,150});
\draw[very thin,color=gray]({axis cs:0,200}) -- ({axis cs:8,200});
\draw[very thin,color=gray]({axis cs:0,250}) -- ({axis cs:8,250});
\end{axis} 
\end{tikzpicture} 
\end{figure}

\begin{tikzpicture}
\draw(0cm, 0cm) -- (10cm, 0cm); %Abzisse
\draw (0cm, 0cm) -- (0cm, -0.1cm);
\draw (10cm, 0cm) -- (10cm, -0.1cm);

\draw(-0.1cm, 0cm) -- (-0.1cm, 3.5cm); %Ordinate
\draw(-0.1cm, 0cm) -- (-0.2cm, 0cm);
\draw(-0.1cm, 3.5cm) -- (-0.1cm, 3.5cm) node [left] {$10^1 kWh/m^2$};

\foreach \x in {10,20,30} %Hilfslinien
    \draw[gray!50, text=black] (-0.2 cm,\x mm) -- (10 cm,\x mm) 
    node at (-0.5 cm,\x mm){\x}; %Beschriftung der Hilfslinien

    \node at (4.5cm,4cm) {Primärenergieverbrauch pro Quadratmeter}; %Überschrift

\foreach \x/\y/\Verbrauch/\z/\v in {10/22.026/Unrenoviert/220.6/50,
                              25/21.926/Fenster/219.26/75,
                              40/19.767/Hülle gedämmt/197.67/100,
                              55/16.79/Bodenplatte gedämmt/167.9/125,
                              70/4/RLT neu/40/150,
                              85/4/Heizung neu/40/175}
                              {

        \draw[fill=green] (\x mm,0cm) rectangle (0.95cm+\x mm,\y mm) node at (0.65cm + \x mm,\y mm + 0.3cm) {\z}; %die Säulen
        \node[rotate=45, left] at (0.6cm +\x mm,-0.1cm) {\Verbrauch}; %Säulenbeschriftung
        };          
\end{tikzpicture}


12/21/2016 08:43 PM
Zwei X-Achsen und eine Y-Achse

Ich möchte meine Daten plotten, am liebsten wie im Titel angegeben mit zwei X- (oben und unten) und einer Y-Achse. Auf der oberen X-Achse (X2) soll die Frequenz logarithmisch aufgetragen werden. Ansonsten werden Realteil (X1) und Imaginärteil (Y) aufgetragen.

Hier ist mein bisheriger Code:

Open in Online-Editor
\documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[]{pgfplots}
\usepackage[]{tikz}
\usepackage{siunitx}

\pgfplotscreateplotcyclelist{mycolorlist}{
blue!01!green,every mark/.append style={fill=blue!10!black},mark=+\\
}
\pgfplotscreateplotcyclelist{mycolorlist2}{
blue!70!green,every mark/.append style={fill=blue!10!black},mark=+\\
}

\pgfplotsset{compat=1.9}
\pgfplotsset{every axis label/.append style={font=\large}}
\pgfplotsset{every tick label/.append style={font=\large}}

\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
grid=both, 
axis equal,
width=12cm, 
height=9cm,
xtick pos=left,
ytick pos=left,    
xlabel={x1}, ylabel={y1}, 
legend style={at={(0.97,0.03)},anchor=south east, cells={anchor=west}},
legend style={font=\footnotesize},
cycle list name=mycolorlist,
]
\addplot table [x=b,y expr=-\thisrow{c}]{myData.txt};
\legend{Zyklus 0}
\end{axis}

\begin{semilogxaxis}[
width=12cm,
height=9cm,
cycle list name=mycolorlist2,
axis x line*=top,
xlabel={x2}     
]
\addplot table [y=c,x=a]{myData.txt};
\end{semilogxaxis}
\end{tikzpicture}
\end{figure}
\end{document}

Hier ist ein Auszug aus myData.txt

Number a b c Significance Time/s 1 1.1307e+03 3.7337e-01 -5.3821e-02 1.000 0.0 2 1.4176e+03 3.6739e-01 -5.1699e-02 1.000 2.1 3 1.7774e+03 3.5992e-01 -4.9973e-02 1.000 3.0 4 2.2284e+03 3.5299e-01 -4.7547e-02 1.000 4.0 5 2.7940e+03 3.4617e-01 -4.5755e-02 1.000 4.9 6 3.5030e+03 3.3947e-01 -4.4076e-02 1.000 5.8 7 4.3920e+03 3.3355e-01 -4.1470e-02 1.000 6.7 8 5.5066e+03 3.2729e-01 -4.0056e-02 1.000 7.7 9 6.9041e+03 3.2171e-01 -3.8309e-02 1.000 8.6 10 8.6563e+03 3.1575e-01 -3.6648e-02 1.000 9.5 11 1.0853e+04 3.0963e-01 -3.4914e-02 1.000 10.5 12 1.3607e+04 3.0393e-01 -3.2820e-02 0.999 11.5 13 1.7061e+04 2.9772e-01 -3.0281e-02 1.000 12.5 14 2.1390e+04 2.9143e-01 -2.7832e-02 1.000 13.5 15 2.6819e+04 2.8524e-01 -2.4287e-02 1.000 14.4 16 3.3625e+04 2.7831e-01 -1.9335e-02 0.999 15.4 17 4.2159e+04 2.7209e-01 -1.3779e-02 1.000 16.4 18 5.2858e+04 2.6484e-01 -6.0846e-03 0.999 17.4 19 6.6272e+04 2.5688e-01 4.1042e-03 0.999 18.4 20 8.3091e+04 2.5016e-01 1.8241e-02 0.999 19.4 21 1.0418e+05 2.4365e-01 3.4986e-02 0.999 20.4 22 1.3062e+05 2.3610e-01 6.0023e-02 0.997 21.4 23 1.6377e+05 2.2889e-01 8.5631e-02 0.997 22.4 24 2.0533e+05 2.2829e-01 1.1664e-01 0.998 23.4 25 2.5743e+05 2.2316e-01 1.5516e-01 0.999 24.4 26 3.2277e+05 2.2232e-01 2.0472e-01 0.997 25.4 27 4.0468e+05 2.2098e-01 2.6878e-01 0.995 26.4 28 5.0738e+05 2.0258e-01 3.4947e-01 0.992 27.4 29 6.3614e+05 1.9242e-01 4.4202e-01 0.992 28.5 30 7.9759e+05 1.7662e-01 5.5756e-01 0.994 29.5 31 1.0000e+06 1.5337e-01 6.9919e-01 0.993 30.5 32 7.9759e+05 1.7692e-01 5.5753e-01 0.993 31.5 33 6.3614e+05 1.9149e-01 4.4283e-01 0.992 32.4 34 5.0738e+05 2.0257e-01 3.4793e-01 0.993 33.5 35 4.0468e+05 2.0842e-01 2.7402e-01 0.995 34.4 36 3.2277e+05 2.1187e-01 2.1308e-01 0.998 35.4 37 2.5743e+05 2.1993e-01 1.5778e-01 0.998 36.5 38 2.0533e+05 2.2545e-01 1.1929e-01 0.999 37.6 39 1.6377e+05 2.3144e-01 8.6229e-02 0.997 38.6 40 1.3062e+05 2.3499e-01 5.7053e-02 0.996 39.6 41 1.0418e+05 2.4046e-01 3.5362e-02 0.999 40.6 42 8.3091e+04 2.4781e-01 1.6862e-02 0.999 41.6 43 6.6272e+04 2.5527e-01 5.2198e-03 0.999 42.6 44 5.2858e+04 2.6278e-01 -5.8814e-03 1.000 43.5 45 4.2159e+04 2.6970e-01 -1.3697e-02 0.999 44.5 46 3.3625e+04 2.7714e-01 -1.9114e-02 0.999 45.5 47 2.6819e+04 2.8283e-01 -2.4309e-02 0.999 46.5 48 2.1390e+04 2.8954e-01 -2.8258e-02 1.000 47.5 49 1.7061e+04 2.9509e-01 -3.0504e-02 0.999 48.5 50 1.3607e+04 3.0105e-01 -3.2446e-02 1.000 49.5 51 1.0853e+04 3.0645e-01 -3.4713e-02 1.000 50.5 52 8.6563e+03 3.1271e-01 -3.6266e-02 1.000 51.4 53 6.9041e+03 3.1810e-01 -3.8181e-02 1.000 52.4 54 5.5066e+03 3.2358e-01 -3.9708e-02 1.000 53.3 55 4.3920e+03 3.2939e-01 -4.1495e-02 1.000 54.2 56 3.5030e+03 3.3529e-01 -4.3428e-02 1.000 55.1 57 2.7940e+03 3.4159e-01 -4.5300e-02 1.000 56.0 58 2.2284e+03 3.4812e-01 -4.7161e-02 1.000 56.9 59 1.7774e+03 3.5485e-01 -4.9375e-02 1.000 57.9 60 1.4176e+03 3.6201e-01 -5.1313e-02 1.000 58.8 61 1.1307e+03 3.6970e-01 -5.3293e-02 1.000 59.7 62 9.0179e+02 3.7704e-01 -5.5533e-02 1.000 60.6 63 7.1926e+02 3.8506e-01 -5.7373e-02 1.000 61.5 64 5.7367e+02 3.9324e-01 -5.8939e-02 1.000 62.4 65 4.5755e+02 4.0174e-01 -6.0492e-02 1.000 64.1 66 3.6494e+02 4.1107e-01 -6.2402e-02 1.000 66.0 67 2.9107e+02 4.2069e-01 -6.4106e-02 0.999 67.5 68 2.3215e+02 4.3118e-01 -6.6501e-02 0.998 68.9 69 1.8516e+02 4.3805e-01 -6.9636e-02 0.999 70.3 70 1.4768e+02 4.4719e-01 -7.3833e-02 0.999 71.8 71 1.1779e+02 4.5717e-01 -7.6702e-02 1.000 73.2 72 9.3947e+01 4.6961e-01 -8.1250e-02 0.999 74.7 73 7.4931e+01 4.8103e-01 -8.5096e-02 1.000 76.2 74 5.9538e+01 4.9363e-01 -8.9644e-02 1.000 77.8 75 4.6991e+01 5.0843e-01 -9.2945e-02 1.000 79.4 76 3.6825e+01 5.2417e-01 -9.6522e-02 1.000 81.1 77 2.8642e+01 5.4183e-01 -9.9961e-02 1.000 82.8 78 2.2099e+01 5.6018e-01 -1.0261e-01 1.000 84.7 79 1.6907e+01 5.8100e-01 -1.0465e-01 1.000 86.7 80 1.2819e+01 6.0342e-01 -1.0534e-01 1.000 88.9 81 9.6267e+00 6.2746e-01 -1.0144e-01 1.000 91.4 82 7.1569e+00 6.5170e-01 -9.5084e-02 1.000 94.3 83 5.2641e+00 6.7182e-01 -8.5941e-02 1.000 97.7 84 3.8284e+00 6.8667e-01 -7.6260e-02 1.000 101.7 85 2.7515e+00 7.0091e-01 -6.7177e-02 1.000 106.7 86 1.9531e+00 7.1236e-01 -6.0212e-02 1.000 113.2 87 1.3686e+00 7.2143e-01 -5.4380e-02 1.000 124.1 88 9.4639e-01 7.2718e-01 -5.1820e-02 1.000 136.7 89 6.4562e-01 7.3101e-01 -5.0840e-02 1.000 153.3 90 4.3451e-01 7.3433e-01 -5.2595e-02 1.000 177.7 91 2.8857e-01 7.4604e-01 -5.8908e-02 1.000 211.9 92 1.8924e-01 7.6729e-01 -6.8159e-02 1.000 258.1 93 1.2266e-01 7.7107e-01 -8.1158e-02 1.000 319.5 94 7.8703e-02 7.9544e-01 -1.0128e-01 1.000 409.6 95 5.0090e-02 8.1486e-01 -1.2813e-01 0.999 576.3 96 3.1698e-02 8.3853e-01 -1.6609e-01 1.000 761.4 97 2.0000e-02 8.6938e-01 -2.2297e-01 0.999 1030.0

Beim Ausführen des Codes wird folgender Plot ausgegeben:

alt text

Zwei Probleme treten auf. Zum einen werden zwei übereinander liegende Y-Achsen erstellt, jedoch soll es nur eine gemeinsame geben. Zum anderen liegt der erste Wert der blauen Linie nur auf der gleichen Höhe wie der erste Wert der grünen Linie. Diese sollen in einem Punkt liegen. Das Problem hierfür ist axis equal. Dieser Befehl soll beibehalten werden. Die zweite Linie (für X2 gegen Y) wurde nur geplottet um zu zeigen, dass die Werte der Frequenz (X2) nicht mit denen des Realteils (X1) übereinstimmen.