如何设置 pgfplot 的宽度以适合 tikz 矩阵的宽度?

如何设置 pgfplot 的宽度以适合 tikz 矩阵的宽度?

我希望能够将pgfplots绘图的宽度控制在 的宽度matrix。绘图应位于 之下matrix。理想情况下,绘图的尺寸仅取决于 的大小matrix(因此如果matrix发生变化,绘图也会发生变化)。

绘图和matrix都是更大的绘图的一部分tikzpicture,其中包含所有相对于彼此定位的其他组件,因此我不想有两个单独的 tikzpictures。这是一个最小的示例代码:

\documentclass{minimal}
\usepackage{tikz,pgfplots}

\begin{document}

\begin{tikzpicture}
    \matrix[minimum size=4cm] (A) {
        \node{1};          & \node{2};                      \\
        \draw circle (.1); & \fill (-1,-1) rectangle (1,1); \\
    };
    \begin{axis}
        \addplot[red,domain=0:10,samples=25] {x^2};
    \end{axis}        
\end{tikzpicture}

\end{document}

我还添加了一张我想要的图片(或多或少)。注意:我只能通过使用两个单独的 tikzpictures 来实现这一点...

目标

答案1

您可以通过以下方式创建自己的测量风格

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\tikzset{getwedist/.code args={#1 and #2}{% measures horizontal distance [#1.west-#2.east] 
  \pgfextra{\pgfpointdiff{\pgfpointanchor{#1}{west}}{\pgfpointanchor{#2}{east}}%
  \xdef\mylength{\the\csname pgf@x\endcsname}}}
}

\begin{document}

\begin{tikzpicture}
    \matrix[minimum size=4cm,append after command={[getwedist=A and A]}] (A) {
        \node{1};          & \node{2};                      \\
        \draw circle (.1); & \fill (-1,-1) rectangle (1,1); \\
    };
    \begin{axis}[width=\mylength,height=2cm,anchor=north,at=(A.south)]
        \addplot[red,domain=0:10,samples=25] {x^2};
    \end{axis}        
\end{tikzpicture}

\end{document}

在此处输入图片描述

请看一下为什么要避免使用最小类?

相关内容