goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Säulendiagramm mit 2 y-Achsen auf Textbreite

 

feichti92
Forum-Anfänger
Forum-Anfänger

Beiträge: 14
Anmeldedatum: 17.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2017, 06:03     Titel: Säulendiagramm mit 2 y-Achsen auf Textbreite
  Antworten mit Zitat      
Hallo Leute,
habe wieder einmal ein Problem mit Tikz beim Erstellen eines Säulendiagramms:

Code • Öffne in Overleaf

\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{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}

\begin{document}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
\begin{figure}[htb]
  \centering
  \begin{tikzpicture}
    \pgfplotsset{
        width=\textwidth,
        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}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit vel, luctus pulvinar, hendrerit id, lorem. Maecenas nec odio et ante tincidunt tempus. Donec vitae sapien ut libero venenatis faucibus. Nullam quis ante. Etiam sit amet orci eget eros faucibus tincidunt. Duis leo. Sed fringilla mauris sit amet nibh. Donec sodales sagittis magna. Sed consequat, leo eget bibendum sodales, augue velit cursus nunc,
\end{document}
 


Ergebnis:



Da ich hier auf der rechten Seite des Plots eine 2. y-Achse habe, welche auch ein Label besitzt, rückt genau dies über die \textwidth hinaus. Kann ich den gesamten Plot (inkl. aller Achsen + Beschriftungen) auf \textwidth bringen? Oder muss ich manuell mit \textwidth - XXpt herumprobieren?

Danke!
Private Nachricht senden Benutzer-Profile anzeigen

esdd
Forum-Meister
Forum-Meister

Beiträge: 2221
Anmeldedatum: 07.02.10
Wohnort: Stutensee
Version: MiKTeX 2.9
     Beitrag Verfasst am: 29.06.2017, 12:42     Titel:
  Antworten mit Zitat      
Von der vorgegebenen Breite width=\textwidth werden 45pt für die Breite der Achsenbeschriftungen abgezogen und der Rest für die Breite des eigentlichen Diagramms verwendet. (Das gilt natürlich nur, wenn nicht weitere/andere die Breite betreffende Einstellungen vorgenommen werden.)

Die 45pt sind dabei ein fester Wert, der unabhängig von der tatsächlichen Breite der Label gilt. Da Du eine zweite Achse mit eigener Beschriftung hast, dürfte es eine gute Näherung sein, bei der Breitenangabe nochmals 45pt abzuziehen.



Code • Öffne in Overleaf
\documentclass{scrbook}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}% derzeit aktuelle Version ist 1.15

\usepgfplotslibrary{units}

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

\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}
\usepackage{showframe}% Anzeigen des Seitenlayouts
\usepackage{blindtext}% nur für Fülltext
\begin{document}
\blindtext

\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,
        axis x line=none,% x Achse 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}

\blindtext
\end{document}
Private Nachricht senden Benutzer-Profile anzeigen

feichti92
Forum-Anfänger
Forum-Anfänger

Beiträge: 14
Anmeldedatum: 17.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2017, 06:18     Titel:
  Antworten mit Zitat      
Danke! Funktioniert Very Happy
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2017 goLaTeX.de