goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Direktlinks:
Zuletzt aktive Beiträge
Unbeantwortete Beiträge
[Erweitert]

Forenstatistik:
Beiträge: 83601
Top-Poster: Johannes_B (4679)

Wir begrüßen unseren neuesten Benutzer Nero932.

Partner:


goLaTeX.de wird gefördert durch DANTE e.V.: Deutschsprachige Anwendervereinigung TeX





Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2 PGF-Plots mit definierter Breite nebeneinander anordnen

 

Gerd
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 12:03     Titel: 2 PGF-Plots mit definierter Breite nebeneinander anordnen
  Antworten mit Zitat      
Hallo,

ich habe ein Dokument, das mittels geometry jeweils links und rechts einen Rand von 2 Zentimeter bekommt.
Nun möchte ich mehrere Plots mit TikZ und PGF darstellen. Pro Abbildung (figure-Umgebung) sollen zwei Plots nebeneinander stehen.
Damit alle Plots von der Größe gleich sind und alles später einheitlich aussieht, habe ich die Breite der Plots explizit vorgegeben. Jeder Plot soll dabei 8cm breit sein, zwischen den Plots soll ein Abstand von 0.5cm sein und links und rechts vom Rand jeweils ein Abstand von 0.25cm. Dies ergibt zusammen:
0.25cm + 8cm + 0.5cm + 8cm + 0.25cm = 17cm
Hinzu kommt der linke und rechte Seitenrand von jeweils 2cm. Dies ergibt zusammen 21cm, also genau der Breite einer DIN A4 Seite.

Dies habe ich alles so umgesetzt. Wie allerdings das folgende Minimalbeispiel zeigt, kann Latex die Bilder nicht nebeneinander anordnen, sondern sie werden untereinander angeordnet:
Code • Öffne in Overleaf

\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{a4paper,left=20mm,right=20mm}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{pgfplots}
\parindent0pt
\begin{document}
\begin{figure}[b]
   \centering
   \begin{tikzpicture}[background rectangle/.style={fill=red!25}, show background rectangle]
   %Erster Plot
      \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
         \addplot[color=red] coordinates {(0,0)(1,1)(2,0.5)(4,2)(5,1)};
      \end{axis}
   \end{tikzpicture}
   \hspace{0.5cm} %Abstand zwischen den zwei Plots
   \begin{tikzpicture}[background rectangle/.style={fill=red!25}, show background rectangle]
   %Zweiter Plot
      \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
         \addplot[color=red] coordinates {(0,0)(1,4)(2,1)(4,3)(5,2)};
      \end{axis}
   \end{tikzpicture}
\end{figure}
\end{document}

Ich vermute mal das es darin liegt, dass links und rechts bei jedem einzelnen Plot noch ein kleiner Abstand hinzugefügt wird, wie man durch die Hintergrundfarbe gut sehen kann, sodass jeder Plot nicht 8cm breit ist sondern ein kleines bisschen mehr. Weiß jemand, wie ich das umgehen kann?

Und wie kann ich den Abstand zwischen der Y-Achse und der Y-Achsenbeschriftung reduzieren?

Danke,
Gruß Gerd

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 12:26     Titel:
  Antworten mit Zitat      
Da gibt es zum einen zwei unerwünschte Leerzeichen vor und nach dem \hspace zwischen den beiden tikzpicture-Umgebungen. Zum anderen haben selbige auch noch einen inneren Abstand:
Code • Öffne in Overleaf
\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{a4paper,left=20mm,right=20mm}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}% Sollte man immer unmittelbar nach dem Laden von
                         % pgfplots angeben!
\parindent0pt% Sollte man nie machen! Ggf. Paket parskip verwenden!
\begin{document}
\begin{figure}[b]
\centering
\begin{tikzpicture}[background rectangle/.style={fill=red!25}, show background
  rectangle,inner sep=0pt
]
%Erster Plot
\begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
\addplot[color=red] coordinates {(0,0)(1,1)(2,0.5)(4,2)(5,1)};
\end{axis}
\end{tikzpicture}%
\hspace{0.5cm}%Abstand zwischen den zwei Plots
\begin{tikzpicture}[background rectangle/.style={fill=red!25}, show background
  rectangle,inner sep=0pt
]
%Zweiter Plot
\begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
\addplot[color=red] coordinates {(0,0)(1,4)(2,1)(4,3)(5,2)};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

Beachte unbedingt auch die weiteren Kommentare im Quellcode.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 12:27     Titel:
  Antworten mit Zitat      
PS: Es sei an dieser Stelle auch noch auf das sehr schöne Paket Paket auf CTANsubcaption hingewiesen.

Gerd
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 13:36     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für Deine Antwort.
Leider macht mir inner sep=0pt die Zahlen zu nah an die Achsen. Ich habe mich deshalb für das vorgeschlagene Paket subcaption entschieden, da ich sowiso noch Bildunterschriften benötige, vielen Dank für den Hinweis.
Das \hspace lasse ich nun weg, weil mir der Abstand zwischen den Plots völlig aussreicht. Mein Problem ist nun allerdings, dass links ein viel geringerer Abstand zum Seitenrand ist als rechts. Ich persönlich finde das etwas unschön und würde dies gerne vermeiden. Wie könnte ich das hinbekommen?
Hier das Minimalbeispiel:

Code • Öffne in Overleaf

\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{subcaption}
\usepackage[a4paper]{geometry}
\geometry{a4paper,left=20mm,right=20mm}
\usepackage{tikz}
\usepackage{pgfplots}
%\pgfplotsset{compat=1.14}
\usepackage{parskip} %\parindent0pt
\usepackage{showframe}
\begin{document}
\begin{figure}[htb]
   \begin{subfigure}{.5\linewidth}
      \begin{tikzpicture}
      \centering
         \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
            \addplot[color=red] coordinates {(0,0)(1,1)(2,0.5)(4,2)(5,1)};
         \end{axis}
      \end{tikzpicture}
      \caption{Erster Plot}
   \end{subfigure}
   \begin{subfigure}{.5\linewidth}
      \begin{tikzpicture}
      \centering
         \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
            \addplot[color=red] coordinates {(0,0)(1,4)(2,1)(4,3)(5,2)};
         \end{axis}
      \end{tikzpicture}
      \caption{Zweiter Plot}\label{fig:1b}
   \end{subfigure}
   \caption{2 Plots nebeneinnander}
\end{figure}
\end{document}


Zu den anderen beiden Bemerkungen:
1. Der Befehl \pgfplotsset{compat=1.14} gibt bei mir folgende Fehlemeldung:
Code • Öffne in Overleaf
! Package pgfkeys Error: Choice '1.14' unknown in choice key '/pgfplots/compat/anchors'. I am going to ignore this key.See the pgfkeys package documentation for explanation.Type H <return> for immediate help....

2. Ich habe nun \usepackage{parskip} verwendet, obowhl das auf den ersten Blick nichts anderes macht als \parindent0pt. Mein Ziel ist es lediglich, dass bei einem neuen Absatz nicht eingerückt wird.

Danke,
Gruß Gerd

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 13:49     Titel:
  Antworten mit Zitat      
Dein Paket auf CTANpgfplots ist veraltet. Mach entweder ein Update oder schau in der zugehörigen Anleitung nach, welche Version Du verwendest und gib diese an.

Lediglich den Absatzeinzug abzuschalten ist nicht günstig. Damit werden Absätze nicht mehr ausgezeichnet. Abhängig von der zufällig Füllung der letzten Zeile eines Absatzes ist der nachfolgende nicht mehr erkennbar. Damit sind Absätze beliebig. Man sollte immer entweder Absatzeinzug oder Absatzabstand verwenden (Einzug gilt allgemein als überlegen). Daher der Rat zu Paket Paket auf CTANparskip. In der Dokumentationparskip-Anleitung finden sich weitere Möglichkeiten des Pakets.

Du hast erneut ein unerwünschtes Leerzeichen durch ein nicht auskommentiertes Zeilenende nach dem ersten \end{subfigure}.

Ich würde übrigens \subcaptionbox für die beiden Bilder verwenden. Falls das bei Dir nicht funktioniert, musst Du auch Paket auf CTANsubcaption (und ggf. auch Paket auf CTANcaption).
Code • Öffne in Overleaf
\documentclass[12pt,a4paper]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{subcaption}
\usepackage[a4paper]{geometry}
\geometry{a4paper,left=20mm,right=20mm}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}% besser durch konkrete Version ersetzen!
\usepackage{parskip} %\parindent0pt
\usepackage{showframe}
\begin{document}
\begin{figure}[htb]
   \centering
   \subcaptionbox{Erster Plot}{%
     \begin{tikzpicture}
       \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
         \addplot[color=red] coordinates {(0,0)(1,1)(2,0.5)(4,2)(5,1)};
       \end{axis}
     \end{tikzpicture}%
   } % <-- Hier absichtlich ein Leerzeichen Abstand gelassen
   \subcaptionbox{Zweiter Plot\label{fig:1b}}{%
      \begin{tikzpicture}
      \begin{axis}[width=8cm,height=6cm,xlabel={X-Achse},ylabel={Y-Achse}]
         \addplot[color=red] coordinates {(0,0)(1,4)(2,1)(4,3)(5,2)};
       \end{axis}
     \end{tikzpicture}
   }%
   \caption{2 Plots nebeneinnander}
\end{figure}
\end{document}


BTW: Falls eine KOMA-Script-Klasse verwendet wird (wozu ich durchaus raten würde), verwendet man übrigens nicht Paket Paket auf CTANparskip, sondern gibt bei \documentclass Option parskip an. KOMA-Script bietet für die Option unterschiedliche Werte, die in der Anleitung nachzulesen sind.

Gerd
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2017, 14:17     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für Deine Hilfe, es funktioniert nun wunderbar, genau das was ich wollte. Und vielen Dank auch für die sonstigen Anmerkungen.

Danke,
Gruß Gerd

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