DirkPitt” post=95204Ciao
Il seguente codice me le dispone in orizzontale. Mi puoi dire dove sbaglio?
`
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{kpfonts}\pgfplotsset{every axis/.append style={
axis x line=bottom,
axis line style={->},
xlabel={$\rho$},
axis lines = left,
xtick = \empty,
ytick = \empty,
every axis x label/.style={at={(axis description cs:1,0)},anchor=west},
every axis y label/.style={at={(axis description cs:0,1)},anchor=east}
}
}\tikzset{>=stealth}
\begin{document}\begin{tikzpicture}
\begin{axis}[
ylabel=$D$,
xmin=0,xmax=5,
ymin=-1,ymax=6,
]
\addplot[domain = 0:1]{5*x};
\addplot[domain=1:4]{5};
\end{axis}
\end{tikzpicture}\vspace{1pt}
\begin{tikzpicture}
\begin{axis}[
ylabel = $S$,
xtick = {1, 4},
xticklabels = {$\rho_c$, $\rho_j$},
xmin=0,xmax=5,
ymin=-1,ymax=6,
]
\addplot[domain = 0:1]{5};
\addplot[domain=1:4]{-5/3 * (x-1) + 5};
\end{axis}
\end{tikzpicture}\end{document}
`
È quello che dicevo prima: la parte inferiore della bounding box deve essere uguale. Tradotto: se in una figura hai delle etichette sull’asse x e sull’altra no, la prima occupa più spazio in basso rispetto alla seconda. Quindi non sono allineate.
Hai diverse opzioni: la prima è di usare il comando [tt]\useboundingbox[/tt] per definire a mano la bounding box. Dovresti in sostanza disegnare un quadrato immaginario per ogni figura, ovviamente ogni quadrato deve comprendere la figura. Tenendo come riferimento l’asse x, il quadrato della prima figura dovrebbe essere leggermente più grande verso il basso rispetto al quadrato della seconda. Quindi è un’opzione da lasciare perdere se non sai esattamente ciò che stai facendo.
Tralasciando altre soluzioni un po’ impraticabili, quella più elegante è sicuramente di usare per entrambe le figure le stesse etichette per l’asse x. In questo modo siamo sicuri che occupino lo stesso spazio in basso. Poi, le rendiamo opache solo nella prima figura e il gioco è fatto. In termini di codice: `
\documentclass
{standalone}
\usepackage{pgfplots}
\usepackage{kpfonts}
\pgfplotsset{every axis/.append style={
axis x line=bottom,
axis line style={->},
xlabel={$\rho$},
axis lines = left,
xtick = \empty,
ytick = \empty,
every axis x label/.style={at={(axis description cs:1,0)},anchor=west},
every axis y label/.style={at={(axis description cs:0,1)},anchor=east}
},
fai sparire le etichette/.style={
xtick style={opacity=0},
xticklabel style={opacity=0},
}
}
\tikzset{>=stealth}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ylabel=$D$,
xmin=0,xmax=5,
ymin=-1,ymax=6,
xtick = {1, 4},
xticklabels = {$\rho_c$, $\rho_j$},
fai sparire le etichette,
]
\addplot[domain = 0:1]{5*x};
\addplot[domain=1:4]{5};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
ylabel = $S$,
xtick = {1, 4},
xticklabels = {$\rho_c$, $\rho_j$},
xmin=0,xmax=5,
ymin=-1,ymax=6,
]
\addplot[domain = 0:1]{5};
\addplot[domain=1:4]{-5/3 * (x-1) + 5};
\end{axis}
\end{tikzpicture}
\end{document}
` Non l’ho testato, ma dovrebbe funzionare.
Ciao
Claudio