So zentrieren Sie eine Handlung mit externen Legenden

So zentrieren Sie eine Handlung mit externen Legenden

Ich möchte ein Diagramm mit äußeren Legenden zentrieren, aber die gesamte Abbildung wird zentriert (Diagramm mit Legenden). Die Position des Diagramms sollte so sein, als ob die äußere Legende nicht vorhanden wäre.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}

\begin{figure}[h]
\centering
  \begin{tikzpicture}
  \begin{semilogxaxis}[
  xmin=0.01,xmax=100,
  ymin=0,ymax=5,
  width=8cm,
  legend style={at={(1.03,0.5)},anchor=west,draw=none},
  legend cell align={left},
  grid]
  \addplot[red,domain=0.01:100,samples=400]{(2)/(1+x^2)};
  \addplot[blue,domain=0.01:100,samples=400]{(1+x^2)/(1-x^2+x^4)};
  \legend{$Q=0.5$,$Q=1$}
  \end{semilogxaxis}
  \end{tikzpicture}
\caption{Lorem Ipsum}
\end{figure}

\end{document}

Sieht aus wie: Bildbeschreibung hier eingeben

Es sollte aber so aussehen (natürlich mit der hinzugefügten äußeren Legende): Bildbeschreibung hier eingeben

Antwort1

Ich denke, der einfachste Weg, Ihr Ziel zu erreichen, besteht darin, einfach overlaydie legend styleOptionen zu erweitern. Dadurch wird verhindert, dass die Legende bei der Bestimmung des Begrenzungsrahmens berücksichtigt wird.

% used PGFPlots v1.16
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{figure}[h]
    \centering
    \begin{tikzpicture}
        \begin{semilogxaxis}[
            xmin=0.01,xmax=100,
            ymin=0,ymax=5,
            width=8cm,
            legend style={
                overlay,        % <-- added
                at={(1.03,0.5)},
                anchor=west,
                draw=none,
            },
            legend cell align={left},
            grid,
            domain=0.01:100,samples=400,
        ]
            \addplot [red]  {(2)/(1+x^2)};
            \addplot [blue] {(1+x^2)/(1-x^2+x^4)};
            \legend{$Q=0.5$,$Q=1$}
        \end{semilogxaxis}
    \end{tikzpicture}
    \caption{Lorem Ipsum}
\end{figure}
\end{document}

Bild, das das Ergebnis des obigen Codes zeigt

Antwort2

Suchen Sie nach Folgendem?

Bildbeschreibung hier eingeben

(rote Linien kennzeichnen Textränder)

Hierzu müssen Sie lediglich tikzpictureder Option hinzufügen trim axis left, trim axis right:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{figure}[ht]
\centering
  \begin{tikzpicture}[trim axis left, trim axis right] % <-------
  \begin{semilogxaxis}[
  xmin=0.01,xmax=100,
  ymin=0,ymax=5,
  width=8cm,
  legend style={at={(1.03,0.5)},anchor=west,draw=none},
  legend cell align={left},
  grid]
  \addplot[red,domain=0.01:100,samples=400]{(2)/(1+x^2)};
  \addplot[blue,domain=0.01:100,samples=400]{(1+x^2)/(1-x^2+x^4)};
  \legend{$Q=0.5{}$,$Q=1$}
  \end{semilogxaxis}
  \end{tikzpicture}
\caption{Lorem Ipsum}
    \end{figure}
\end{document}

verwandte Informationen