tikz 图的 x 轴上的坐标显示不正确

tikz 图的 x 轴上的坐标显示不正确

我正在尝试在同一轴上绘制一个函数以及一个阴影网格。虽然我在 -3 和 0 之间的网格中使用了 1cm 的步长,但 xticks 以及阴影区域看起来位置不对。我该如何解决这个问题?谢谢

\begin{tikzpicture}
\begin{axis}[axis lines=right,  
    axis x line=middle,
    xlabel={$t$},
    ylabel={$x$},
    %position spatial axes label on top of the axis
    every axis y label/.style={
    at={(ticklabel* cs:1.05)},
    anchor=south,
},  xtick={-7, -6, -5,  -4,  -3, -2 ,-1},
%    xticklabels={$-7$, $-6$, $-5$,  $-4$,  $-3$, $-2$ ,$-1$},
%    ytick={0.2,0.4,0.6,0.8,1},
    domain=-7:0,
    xmin=-7, xmax=0,
    ymin=0, ymax=1.1,
    samples=500,
]
    \addplot+[mark=none,color=black] {e^(x/2.75)};
\draw[step=1cm,color=gray!50,opacity=0.5] (-3,0) grid (0,1);
\filldraw [fill=gray, draw=black,opacity=0.5]
-- (-3,0)
-- (-3,0.2)
-- (-2,0.2)
-- (-2,0.4)
-- (-1,0.4)
-- (-1,0.6)
-- (0,0.6)
-- (0,0)
-- cycle;
\end{axis}
\end{tikzpicture}

在此处输入图片描述

答案1

环境内部的坐标axis与外部的坐标不同。其工作方式是pgpflots设置轴的大小,然后缩放事物以使范围(由数据或xmin/定义xmax)适合该宽度。

如果你设置

scale only axis,
width=7cm, height=5.5cm

事情可能会变得更好。

scale only axis是必需的,因为pgfplots在 x 和 y 方向上都留有 45pt 的空间用于放置轴标签。因此,如果您设置width=345pt,则轴框本身的宽度将为 300pt。width=7cm是因为您的 x 范围是从 -7 到 0,并且每 1 个轴单位有一个刻度。是因为您的 y 范围是从 0 到 1.1,每 0.2 个轴单位有一个刻度height=5.5cm

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=right,  
    axis x line=middle,
    xlabel={$t$},
    ylabel={$x$},
    %position spatial axes label on top of the axis
    every axis y label/.style={
       at={(ticklabel* cs:1.05)},
       anchor=south,
    },
    xtick={-7, ..., -1},
    ytick={0,0.2,...,1.1},
    domain=-7:0,
    xmin=-7, xmax=0,
    ymin=0, ymax=1.1,
    samples=50,
    scale only axis,
    width=7cm, height=5.5cm
]
\addplot+[mark=none,color=black] {e^(x/2.75)};

\draw[step=1cm,color=gray!50,opacity=0.5] (-3,0) grid (0,1);
\filldraw [fill=gray, draw=black,opacity=0.5]
(-3,0) -| (0,0.6) -| (-1,0.4) -| (-2,0.2) -| cycle;

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容