PGFplots: фиксированный масштаб и фиксированное измерение

PGFplots: фиксированный масштаб и фиксированное измерение

У меня есть две оси pgfplots рядом друг с другом с одинаковыми размерами. Оси должны быть выровнены и использовать одинаковое масштабирование осей. Это приводит к ситуации, когда я указываю width, heightи xи yединичные векторы. Результатом является то, что указанные единичные векторы переопределяют размеры осей.

\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}

МВЭ выглядит так:

текущая ситуация, мвэ

Я бы хотел, чтобы это выглядело так (это достигается путем установки фактических пределов осей, поэтому масштабирование будет другим):

ожидаемый результат

Центр координат не находится в известном месте, поэтому я не могу просто напрямую задать пределы осей.

Есть ли способ сделать это напрямую в pgfplots? Может быть, указать pgfplots использовать одно и то же масштабирование осей между несколькими графиками? Я просмотрел главы 4.10 («Параметры масштабирования») и 4.14 («Указание диапазона построения») руководства pgfplots, но не смог найти решение.

В противном случае я думаю разместить осевые среды (с фиксированными единичными векторами) в центре узлов фиксированного размера, чтобы сохранить равномерное масштабирование, а внешние блоки были бы одинаковыми.

решение1

Вот хакерское решение, которое просто рисует узлы фиксированного размера и размещает оси pgfplots в их центре.

Он достигает визуальной цели, поставленной в вопросе, но имеет два существенных недостатка, делающих его в целом полезным:

  • Если содержимое слишком большое, оно выйдет за границы узла.
  • Если необходимы отметки или другие обозначения, они будут отображаться на фактических скрытых осях.
\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}

Связанный контент