我正在尝试在同一轴上绘制一个函数以及一个阴影网格。虽然我在 -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}