Wie richtet man zwei sich überlappende PGFlots aus?

Wie richtet man zwei sich überlappende PGFlots aus?

Ich bin ziemlich neu bei pgfplots.

Ich versuche, zwei Dinge grafisch darzustellen und sie nebeneinander darzustellen. Wenn ich jedoch Subfigure verwende, überlappen sich meine Diagramme (und Achsenbeschriftungen). Wie kann ich das beheben?

\documentclass{amsart} 
\usepackage{amsthm, amsfonts, amsmath, amssymb, mathrsfs, enumerate,graphicx} 
\usepackage{pgfplots} %For creating plots inside LaTeX itself
\usepackage{subcaption} %To create subfigures

\begin{document}
\begin{figure}
\centering
\begin{subfigure}{.45\linewidth}\centering
\begin{tikzpicture}
\begin{axis}[
                ymin=0,  xmin=0,
                %grid=major, % activate major grid lines
                xlabel=$\text{radius, }r$,
                ylabel=$\text{concentration, }c$,
                title={Steady state concentration},
                title style={yshift=1.5ex},
                axis on top, % descriptions over filled area
                legend pos=outer north east, % customize legend
        ]

        \addplot[smooth,blue,domain=0.5:2]
                {((1-0.00167)*ln(x)+0.00167*ln(0.5)-1*ln(2))/(ln(0.5)-ln(2))} ;
        \end{axis}
\end{tikzpicture}
\caption{Steady state species concentration profile. }
\end{subfigure}
\begin{subfigure}{.45\linewidth}\centering
\begin{tikzpicture}
\begin{axis}[
                ymin=0,  xmin=0,
                xlabel=$\text{radius, }r$,
                ylabel=$\text{chemical potential, }\mu^{c^*}$,
                title={Steady state chemical potential},
                title style={yshift=1.5ex},
                axis on top, % descriptions over filled area
                legend pos=outer north east, % customize legend
        ]

        \addplot[smooth,blue,domain=0.5:2]
                {8.31*310*ln(((1-.00167)*ln(x)+.00167*ln(0.5)-1*ln(2))/(ln(0.5)-ln(2))/.00167)} ;
        \end{axis}
\end{tikzpicture}
\caption{Steady state chemical potential profile}
\end{subfigure}
\caption{Illustration of analytical steady state solution.}
\end{figure}

\end{document}

Antwort1

Das Problem dabei \begin{tikzpicture}[scale=0.65]ist, dass die Schriftarten ebenfalls skaliert werden, sodass sie kleiner aussehen. Sie können stattdessen die Breite der Diagramme mit der widthvon bereitgestellten Option anpassen pgfplots. Sie können dies für alle Diagramme tun, indem Sie hinzufügen

\usepackage{pgfplots} %For creating plots inside LaTeX itself
\pgfplotsset{width=2in} %%<-------------------- this

oder nur für bestimmte Diagramme, indem Sie es zu den Achsenoptionen hinzufügen wie

\begin{axis}[ Breite=2Zoll, ymin=0, xmin=0, . .

Jetzt bleiben die Schriftarten in derselben Größe. Außerdem können Sie scale only axis,nur die Achse skalieren, ohne die Teilstrichbeschriftungen zu berücksichtigen. Und schließlich möchten Sie vielleicht hinzufügen

ylabel style={overlay, anchor=north,},      %%% <-- this added

sodass die Beschriftungen etwas näher an der Y-Achse liegen.

\documentclass{amsart}
\usepackage{amsthm, amsfonts, amsmath, amssymb, mathrsfs, enumerate,graphicx}
\usepackage{pgfplots} %For creating plots inside LaTeX itself
\usepackage{subcaption} %To create subfigures
%\pgfplotsset{width=2in}

\begin{document}
\begin{figure}
\centering
\begin{subfigure}{.45\linewidth}\centering
\begin{tikzpicture}
\begin{axis}[
                width=\linewidth,  %%<----- here
                scale only axis,       %%% <-- this added
                ymin=0,  xmin=0,
                %grid=major, % activate major grid lines
                xlabel=$\text{radius, }r$,
                ylabel=$\text{concentration, }c$,
                ylabel style={overlay, anchor=north,},      %%% <-- this added
                title={Steady state concentration},
                title style={yshift=1.5ex},
                axis on top, % descriptions over filled area
                legend pos=outer north east, % customize legend
        ]

        \addplot[smooth,blue,domain=0.5:2]
                {((1-0.00167)*ln(x)+0.00167*ln(0.5)-1*ln(2))/(ln(0.5)-ln(2))} ;
        \end{axis}
\end{tikzpicture}
\caption{Steady state species concentration profile. }
\end{subfigure}%
\hfill
\begin{subfigure}{.45\linewidth}\centering
\begin{tikzpicture}
\begin{axis}[
                width=\linewidth,   %%<-------- here
                scale only axis,       %%% <-- this added
                ymin=0,  xmin=0,
                xlabel=$\text{radius, }r$,
                ylabel=$\text{chemical potential, }\mu^{c^*}$,
                ylabel style={overlay, anchor=north,},       %%% <-- this added
                title={Steady state chemical potential},
                title style={yshift=1.5ex},
                axis on top, % descriptions over filled area
                legend pos=outer north east, % customize legend
        ]

        \addplot[smooth,blue,domain=0.5:2]
                {8.31*310*ln(((1-.00167)*ln(x)+.00167*ln(0.5)-1*ln(2))/(ln(0.5)-ln(2))/.00167)} ;
        \end{axis}
\end{tikzpicture}
\caption{Steady state chemical potential profile}
\end{subfigure}
\caption{Illustration of analytical steady state solution.}
\end{figure}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

für beide verwenden

\begin{tikzpicture}[scale=0.65]
...

verwandte Informationen