
Eu tenho dois eixos pgfplots próximos um do outro com as mesmas dimensões. Os eixos devem estar alinhados e usar a mesma escala de eixo. Isso leva a uma situação em que eu especifico width
, height
e os vetores unitários x
e . y
O resultado é que os vetores unitários especificados substituem as dimensões do eixo.
\documentclass[tikz,margin=10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=6cm,
height=6cm,
x=5mm,
y=5mm,
ticks=none,
name=ax1
]
\addplot[only marks] coordinates {(-1,-1) (0,0) (1,1)};
\end{axis}
\begin{axis}[
width=6cm,
height=6cm,
x=5mm,
y=5mm,
ticks=none,
name=ax2,
at={($(ax1.south east)+(2mm,0)$)},
]
\addplot[only marks] coordinates {(9.5,10.5) (10,10) (10.5,9.5)};
\end{axis}
\end{tikzpicture}
\end{document}
O MWE fica assim:
Eu gostaria que ficasse assim (conseguido definindo os limites reais do eixo, para que a escala seja diferente):
O centro das coordenadas não está em um local conhecido, então não posso simplesmente definir os limites do eixo diretamente.
Existe uma maneira de fazer isso diretamente no pgfplots? Talvez diga ao pgfplots para usar a mesma escala de eixo entre vários gráficos? Examinei os capítulos 4.10 ("Opções de escala") e 4.14 ("Especificando o intervalo plotado") do manual pgfplots, mas não consegui encontrar uma solução.
Caso contrário, estou pensando em colocar os ambientes dos eixos (com vetores unitários fixos) no centro dos nós de tamanho fixo, para que a escala uniforme seja preservada e as caixas externas sejam as mesmas.
Responder1
Aqui está uma solução hacky que apenas desenha nós de tamanho fixo e coloca os eixos pgfplots em seu centro.
Ele atinge o objetivo visual solicitado na pergunta, mas tem duas desvantagens significativas para ser geralmente útil:
- Se o conteúdo for muito grande, excederá os limites do nó
- Se forem necessários ticks ou outros rótulos, eles serão exibidos nos eixos ocultos reais
\documentclass[tikz,margin=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
% Draw the visible plot boundaries as fixed size nodes
\node[minimum width=6cm, minimum height=6cm, draw] (A) {};
\node[minimum width=6cm, minimum height=6cm, draw, right=2mm of A] (B) {};
% Draw the axis without axis lines, with specified scaling,
% in the middle of the nodes
\begin{axis}[
axis line style={draw=none},
anchor=center,
x=5mm,
y=5mm,
ticks=none,
at=(A.center),
]
\addplot[only marks] coordinates {(-1,-1) (0,0) (1,1)};
\end{axis}
\begin{axis}[
axis line style={draw=none},
anchor=center,
x=5mm,
y=5mm,
ticks=none,
at=(B.center),
]
\addplot[only marks] coordinates {(9.5,10.5) (10,10) (10.5,9.5)};
\end{axis}
\end{tikzpicture}
\end{document}