带裁剪字母的图表

带裁剪字母的图表

如果我编译这个文件:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,every axis/.append style={
  axis x line=middle,
  axis y line=middle,
  ticks=none}}
\pagestyle{empty}
\begin{document}
\begin{center}
  \begin{tikzpicture}
    \begin{axis}[xmin=-.2,xmax=2.75,ymin=-.2,ymax=2.25]
      \plot[thick,samples=100,domain=.5:2.5] {1/x};
      \coordinate (a1) at (.8,0);
      \coordinate (a2) at (0,1.25);
      \coordinate (b1) at (2,0);
      \coordinate (b2) at (0,.5);
      \node[below] at (a1) {\footnotesize$a$};
      \node[below] at (b1) {\footnotesize$b$};
      \node[left] at (a2) {\footnotesize$1/a$};
      \node[left] at (b2) {\footnotesize$1/b$};
      \draw[thin,dashed](a1)--(a1|-a2)--(a2);
      \draw[thin,dashed](b1)--(b1|-b2)--(b2);
    \end{axis}
  \end{tikzpicture}
\end{center}
\end{document}

那么我得到的是这样的:

在此处输入图片描述

如您所见,垂直轴左侧的部分文本被裁剪了。我可以通过用 替换xmin=-.2来轻松修复此问题xmin=-.25,但如果我不想在保留 的同时裁剪文本,我该怎么办xmin=-.2

答案1

只需将节点移出轴环境即可。(使用clip=false可能会产生不良的副作用,例如过度绘图。)

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,every axis/.append style={
  axis x line=middle,
  axis y line=middle,
  ticks=none}}
\pagestyle{empty}
\begin{document}
\begin{center}
  \begin{tikzpicture}
    \begin{axis}[xmin=-.2,xmax=2.75,ymin=-.2,ymax=2.25]
      \plot[thick,samples=100,domain=.5:2.5] {1/x};
      \coordinate (a1) at (.8,0);
      \coordinate (a2) at (0,1.25);
      \coordinate (b1) at (2,0);
      \coordinate (b2) at (0,.5);
      \draw[thin,dashed](a1)--(a1|-a2)--(a2);
      \draw[thin,dashed](b1)--(b1|-b2)--(b2);
    \end{axis}
    \node[below] at (a1) {\footnotesize$a$};
    \node[below] at (b1) {\footnotesize$b$};
    \node[left] at (a2) {\footnotesize$1/a$};
    \node[left] at (b2) {\footnotesize$1/b$};
  \end{tikzpicture}
\end{center}
\end{document}

在此处输入图片描述

还有各种其他选项,例如将这些节点添加为额外的刻度,这些节点也不会被剪裁。

答案2

我看到您设置了ticks=none,然后手动添加了一些非常类似于轴刻度的东西。如果您使用 PGFPLOTS 自己的刻度放置系统,则刻度标签不会被剪裁。

在这个例子中,有很多键设置,但是一旦绘制了图,代码就会减少。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,every axis/.append style={
  axis x line=middle,
  axis y line=middle,
  xticklabel style={name=xtick \ticknum},
  yticklabel style={name=ytick \ticknum},
}}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
        xmin=0,xmax=2.5,ymin=0,ymax=2,
        enlargelimits,
        xtick={0.8,2},
        xticklabels={$a$,$b$},
        ytick={0.5,1.25},
        yticklabels={$1/a$,$1/b$},
        tick style={draw=none},
        ticklabel style={font=\footnotesize},
        typeset ticklabels with strut,
    ]
      \addplot[thick,samples=100,domain=.5:2.5]  {1/x};
      \coordinate (O) at (axis cs:0,0);
      \coordinate (a1) at (xtick 0 |- O);
      \coordinate (a2) at (ytick 1 -| O);
      \coordinate (b1) at (xtick 1 |- O);
      \coordinate (b2) at (ytick 0 -| O);
      \draw[thin,dashed](a1)--(a1|-a2)--(a2);
      \draw[thin,dashed](b1)--(b1|-b2)--(b2);
    \end{axis}
  \end{tikzpicture}
\end{document}

示例代码输出

笔记:

  • 我们可以看到 y 刻度标签没有被自动剪裁。

  • xticklabel styleyticklabel style为刻度标签节点命名。然后我们可以使用这些刻度标签沿轴定位a1a2b1和节点。b2

  • 我们无需通过在每个最小值和最大值上加或减一点来手动扩大限制,这个enlargelimits密钥可以替我们做到这一点。

  • 使和刻度标签typeset ticklabels with strut的基线对齐。我们可以使用或类似方法 将 x 刻度标签移近 x 轴。abxticklabel shift={-1.5mm}

答案3

让我将我的评论转换为答案。 在你的情况下,clip=false效果很好:

\documentclass[margin=3mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16,
    axis lines=middle, % <---
    ticks=none}  

\begin{document}
    \begin{tikzpicture}[
every label/.style={font=\footnotesize, text height=1.2ex, inner sep=2pt}
                        ]
\begin{axis}[
    xmin=-.2,xmax=2.75,
    ymin=-.2,ymax=2.25,
    clip=false] % <---
      \plot[thick,samples=100,domain=.5:2.5] {1/x};
    %
      \coordinate[label=below:$a$] (a1) at (0.8,0);   % <---
      \coordinate[label=below:$b$] (b1) at (2.0,0);   % <---
      \coordinate[label=left:$1/a$] (a2) at (0,1.25); % <---     
      \coordinate[label=left:$1/b$] (b2) at (0,0.5);  % <---
    %
    \draw[very thin, densely dashed]   
        (a1) |- (a2)     (b1) |- (b2);  % <---
    \end{axis}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容