删除边框,使 pgfplot 垂直和水平居中并填充可用空间

删除边框,使 pgfplot 垂直和水平居中并填充可用空间

我想为我的学生创建一个记忆卡游戏,并生成宽度和高度为 6 厘米的二次卡片,然后将其嵌入到将卡片放入网格中的主文件中。

单张卡片可能如下所示:

\documentclass{article}
\usepackage{pgfplots}
\usepackage[T1]{fontenc} % Input format
\usepackage[paperwidth=6cm,paperheight=6cm,top=0cm,bottom=0cm,left=0cm,right=0cm]{geometry}

\begin{document}
    \thispagestyle{plain}
    \pagenumbering{gobble}
    \begin{center}
        \vspace*{\fill}
        \resizebox{0.9\linewidth}{!}{%
            \begin{tikzpicture}[>=stealth]
                \begin{axis}[
                    axis equal,
                    xtick distance=5,
                    ytick distance=5,
                    xmin=-11,xmax=11,
                    ymin=-11,ymax=11,
                    grid=both,
                    axis lines=middle,
                    minor tick num=4,
                    enlargelimits={abs=0.5},
                    axis line style={->},
                    ticklabel style={font=\tiny,fill=white},
                    xlabel={$x$},
                    ylabel={$y$},
                    ]
                    \addplot[no marks,blue,-] expression[domain=-10:10,samples=100]{2*x+3};
                \end{axis}
            \end{tikzpicture}
        }
        \vspace*{\fill}
    \end{center}
\end{document}

由于卡片是二次的,并且 x 和 y 范围长度相同(各为 -11 到 11),我预计绘图也是二次的,但事实并非如此:由于某种原因,x 轴比 y 轴长,因此顶部和底部边框比左右边框大。此外,尽管我使用的是中心环境,但绘图并非水平居中。它看起来像这样:

上述代码示例的输出

非常感谢您对我所做错的事情的提示!

答案1

为了使轴实际上相等,我们需要使用axis equal image而不是,并在其前面axis equal添加一个以正确垂直居中。删除行尾的一些虚假空格可修复水平对齐问题,并将域和范围更改为 [-12,12] 而不是 [-11,11] 可避免因未绘制最终 y 网格线而产生的舍入误差(当我们切换到 时会发生这种情况)。\nointerlineskip\vspacepgfplotsaxis equal image

\documentclass{article}
\usepackage{pgfplots}
\usepackage[T1]{fontenc} % Input format
\usepackage[paperwidth=6cm,paperheight=6cm,top=0cm,bottom=0cm,left=0cm,right=0cm]{geometry}

\begin{document}
    \thispagestyle{plain}
    \pagenumbering{gobble}
    \begin{center}
        \nointerlineskip%<--
        \vspace*{\fill}
        \resizebox{0.9\linewidth}{!}{%
            \begin{tikzpicture}[>=stealth]
                \begin{axis}[
                    axis equal image,%<--
                    xtick distance=5,
                    ytick distance=5,
                    xmin=-12,xmax=12,%<--
                    ymin=-12,ymax=12,%<--
                    grid=both,
                    axis lines=middle,
                    minor tick num=4,
                    enlargelimits={abs=0.5},
                    axis line style={->},
                    ticklabel style={font=\tiny,fill=white},
                    xlabel={$x$},
                    ylabel={$y$},
                    ]
                    \addplot[no marks,blue,-] expression[domain=-12:12,samples=100]{x^2-5*x};
                \end{axis}
            \end{tikzpicture}%<--
        }%<--
        \vspace*{\fill}
    \end{center}
\end{document}

在此处输入图片描述

相关内容