Hallo zusammen! Ich bin auf Empfehlung hier gelandet. Ich habe ein Problem mit einem plot mit zwei Ordinaten. Auf der linken Ordinate werden oben und unten jeweils Linien angezeigt, die der Größe der Achsen-Hilfslinien entsprechen. Da diese grau sind und die Achse schwarz, sieht es nicht sehr professionell aus. Manchen mag dies wie eine Kleinigkeit vorkommen, ich allerdings mache es gerne richtig, wenn ich es richtig mache ;-)

Der Code meines Diagramms sieht folgendermaßen aus.

Open in writeLaTeX
 %\RequirePackage{filecontents}
\begin{filecontents}{\jobname B.dat}

25.0   17.3
27.4   17.9
29.7   19.1
32.1   20.2
34.5   21.3
36.9   22.7
39.2   23.8
41.6   24.8
44.0   26.2
46.4   27.2
48.7   28.2
51.1   29.3
53.5   30.5
55.9   31.6
58.2   32.9
60.6   34.2
63.0   35.1
65.4   36.4
67.7   37.5
70.1   38.5
72.5   39.6
74.9   40.8
77.2   42
79.6   43.3
82.0   44.5
84.4   45.5
86.7   46.5
89.1   47.6
91.5   48.8
93.9   49.9
96.2   51.1
98.6   52.2 
\end{filecontents}

\begin{filecontents}{\jobname A.dat}
25.0   691
27.4   654
29.7   641
32.1   629
34.5   619
36.9   615
39.2   606
41.6   596
44.0   594
46.4   585
48.7   579
51.1   574
53.5   570
55.9   566
58.2   564
60.6   563
63.0   557
65.4   556
67.7   554
70.1   549
72.5   547
74.9   545
77.2   544
79.6   544
82.0   542
84.4   539
86.7   536
89.1   535
91.5   533
93.9   532
96.2   531
98.6   529 
\end{filecontents}

\documentclass{scrbook}
\usepackage{pgfplots}                       
\usepackage{siunitx}                       
\usepgfplotslibrary{units}
\pgfplotsset{
    width=\textwidth,
    height = 0.4\textheight,
    compat=newest,
    minor tick style={black},
    legend style={cells={anchor=west}},
    every axis legend/.append style={at={(0.99,
    0.99)},
    anchor=northeast},
    ticklabel shift={0.05cm}
 }

\begin{document}

\begin{figure}[htb]
\centering
\begin{tikzpicture}
\begin{axis}[grid = major, width = \textwidth-45pt, height = 0.4\textheight,% max space between ticks=50,
            xlabel near ticks,
            ylabel near ticks,
            xlabel = {Scherrate},
            x unit=\si{\second},
            ylabel = {aaa},
            y unit=\si{\percent},
            xmin=0, xmax=100,
            ymin=400, ymax=700,
            x tick label style={/pgf/number format/1000 sep=}
            ]
    \addplot[color = blue, mark = none] table {\jobname A.dat};
    \label{Viskosität}
\end{axis}

\begin{axis}[ylabel near ticks, width = \textwidth-45pt, height = 0.4\textheight,
            axis y line*=right,
            ylabel = {xxx},
            y unit=\si{\percent},
            xmin=0, xmax=100,
            ymin=0, ymax=300,
            x tick label style={/pgf/number format/1000 sep=},
            legend pos=north east,
            legend cell align=left,
            legend style={at={(0.99,0.99)}}
            ]
    \addplot[color = red, mark = none] table {\jobname B.dat};
    \addlegendimage{/pgfplots/refstyle=Viskosität}
    \addlegendentry{Schubspannung}
    \addlegendentry{Viskosität}
\end{axis}
\end{tikzpicture}
\end{figure}

\end{document}

texweltVolkerPgfplots

Ich nutze WinEdt 7.0 (Update auf 8 hat auch nicht geholfen) und Miktex 2.9

gefragt 30 Jul '14, 16:58

Volker%20Racho's gravatar image

Volker Racho
1654612
Akzeptiert-Rate: 100%

bearbeitet 30 Jul '14, 17:30

Johannes's gravatar image

Johannes
7.3k294566

Ursprung übrigens GoLaTeX

(30 Jul '14, 17:11) Johannes

@Volker Willkommen auf der TeXwelt!

(30 Jul '14, 17:20) cgnieder

@Volker @Clemens ich habe mir mal die Freiheit genommen ein Minimalbeispiel aus Daten von GoLaTeX zu erstellen.

(30 Jul '14, 17:24) Johannes

Nun hab ich auch noch einen vergrößerten Ausschnitt eingefügt. Allerdings verstehe ich das Problem immer noch nicht.

(30 Jul '14, 17:31) Johannes

@Volker Herzlich willkommen auf der TeXwelt! Meinst Du die "ticks", die kleinen Striche an den Achsen? Du kannst sie wegkriegen und dennoch das Gitter behalten, indem Du als Optionen für die axis hinzufügst:

major tick length=0pt, minor tick length=0pt

(30 Jul '14, 17:36) stefan ♦♦

Die grauen Striche sind tatsächlich da, auch mit Version 1.10 und ergänztem \pgfplotsset{compat=1.10}:

alt text

Sie werden von dem zweiten Plot durch die Option axis y line*=right in Kombination mit dem Zeichnen der xtick erzeugt. Da die linke Achse fehlt, wird dort ein grauer xtick eingefügt. Dieser landet dann auf der linken Achse des ersten Plots. Sichtbar wird das, wenn man den ersten Plot (und den zugehörigen Legendeneintrag) auskommentiert:

alt text

Vermeiden lässt sich das zum einen in dem man die ohnehin überflüssige Erstellung von xticks im zweiten Plot mit xtick=\empty abstellt, da diese schon vom ersten Plot ausgegeben werden und/oder zum anderen in dem man beim zweiten Plot beide Achsen zeichnen lässt und nur die yticklabel mit Hilfe von yticklabel pos=right auf die rechte Seite schiebt.

Open in writeLaTeX
\documentclass{scrbook}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}% derzeit aktuelle Version ist 1.10

\usepgfplotslibrary{units}

\usepackage{siunitx}
\usepackage[utf8]{inputenc}% Eingabekodierung, gegebenenfalls anpassen

\begin{document}

\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=0,xmax=100,
        no markers
     }
    \begin{axis}[
        grid = major,
        xlabel = {Scherrate},
        x unit=\si{\second},
        ylabel = {aaa},
        y unit=\si{\percent},
        ymin=400, ymax=700,
      ]
      \addplot[blue] table {\jobname A.dat};
      \label{Viskositaet}% keine Umlaute verwenden!!!
    \end{axis}
%
    \begin{axis}[
        yticklabel pos=right,% yticklabel auf der rechten Seite
        ylabel = {xxx},
        y unit=\si{\percent},
        ymin=0, ymax=300,
        xtick=\empty,% xticks nicht noch einmal zeichnen
      ]
      \addplot[red] table {\jobname B.dat};
      \addlegendimage{/pgfplots/refstyle=Viskositaet}
      \addlegendentry{Schubspannung}
      \addlegendentry{Viskosität}
    \end{axis}
  \end{tikzpicture}
\end{figure}
\end{document}

Ergebnis:

alt text

alt text

Bitte beachte, dass ich zusätzlich inputenc zur Angabe der Eingabekodierung geladen habe und dass es nicht sinnvoll ist, im Argument von \label Umlaute zu verwenden. Außerdem habe ich den Code noch etwas überarbeitet und unnötige Doppeleinstellungen entfernt.


Alternativ kann man das Problem auch lösen, wenn man mit

Open in writeLaTeX
\pgfplotsset{set layers}

die Nutzung von Ebenen aktiviert. Bei den dann aktivierten Standardebenen wird die mit den Ticks vor der mit den Achsen ausgegeben.

Permanenter link

beantwortet 30 Jul '14, 19:02

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 30 Jul '14, 20:36

Ich hab gerade mal mein Minimalbeispiel von oben getestet (immernoch TL13) und ich seh die Striche nicht.

(30 Jul '14, 19:15) Johannes

Ich sah diesen Strich auch nicht. Doch Elke hat es wohl genau richtig erkannt! Wobei ich es wohl wie in meinem Kommentar oben machen würde - man braucht doch keine sichtbaren Achsenstriche, wenn ein Gitter an denselben Stellen anliegt. Die Label sind ja trotzdem da, wenn man die ticks unsichtbar macht.

(30 Jul '14, 19:56) stefan ♦♦

Ich hab das auch erst gesehen, als ich stark reingezoomt habe. Im Ausdruck ist nur eine minimale Unregelmäßigkeit zu erkennen. Wenn man ein Gitter hat, dann braucht man die Achsenstriche in der Tat nicht. Falls man jedoch auf das Gitter verzichtet, dann steht das "Problem" wieder. Und es ist auch so sinnvoll in einem der beiden Plots mit xtick=\empty die doppelte Ausgabe der xticklabel zu verhindern.

(30 Jul '14, 20:07) esdd
1

Erst einmal ein fettes DANKESCHÖN für die Antworten. Es funktioniert auf jeden Fall. Das einzige was bei mir nun jedoch nicht funzt, ist xtick=empty,! Keine Ahnung warum. Aber selbst ohne diesen Befehl sind die grauen Striche verschwunden. Das mit den Umlauten war mir nicht klar. Aber auch dafür danke. Ich muss nun nur noch schauen, wie ich über die das Paket siunitx meine Achsen korrekt beschriftet bekomme, da ich zum einen s^-1 und zum anderen mPas und Pa/s benötige. Das werde ich aber umgehend versuchen zu finden. Für Anregungen bin ich aber trotzdem dankbar. Auch für mein Problem mit empty. Ich nutze übrigens nicht [utf8] sondern [latin1]

Aber nochmal. Sensationell die Hilfe hier in diesem Forum. Wenn ich das gewusst hätte, dann wäre ich sofort hierher gekommen.

Danke!!!

Nachtrag: Habe das si-Problem gelöst.

(30 Jul '14, 20:15) Volker Racho

@Volker Ich habe Deine »Antwort« (gleich Lösung der oben gestellten Frage) mal in einen Kommentar umgewandelt

(30 Jul '14, 20:25) cgnieder

@Volker Racho Hast du da empty (falsch) oder \empty (richtig) stehen? Ich habe den Code übrigens gerade noch mal etwas aufgeräumt.

(30 Jul '14, 20:37) esdd

@esdd Volker hat es richtig, mit backslash, es ist nur in der Darstellung nicht zu sehen, da kein inline code (keine backticks). Wollte es korrigieren, doch der Kommentar war schon zu lang :-) macht ja nix, ist ja alles gesagt und später können wir die Kommentare entfernen und die Lösung klar stehen lassen.

(30 Jul '14, 21:34) stefan ♦♦
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

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

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

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

Frage-Themen:

×298

gestellte Frage: 30 Jul '14, 16:58

Frage wurde gesehen: 21,341 Mal

zuletzt geändert: 30 Jul '14, 21:34