我正在尝试使用 pgfplots 创建一个简单的笛卡尔平面,其中 x 和 y 轴的正端略微延伸到方形网格之外。到目前为止,我所得到的如下:
\documentclass{article}
\usepackage{tikz, pgfplots}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
axis line style=->,
xmin=-10,xmax=10,
ymin=-10,ymax=10,
grid=both,
grid style={draw=gray!25},
xtick={-10, -8, ..., 10}, xtick style={yshift=-0.5ex},
ytick={-10, -8, ..., 10}, ytick style={xshift=-0.5ex},
yticklabel style={xshift=-0.5ex},
minor tick num=1,
minor tick length=0.5ex,
minor x tick style={yshift=0.25ex}, minor y tick style={xshift=0.25ex},
]
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
作为参考,这是我尝试复制的模板。
通过扩展 xmax/ymax 值,网格线默认会延伸到这些值。有人对限制网格长度或延长正轴端有什么建议吗?
答案1
欢迎!您可以使用shorten
并使用负距离。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
axis line style={-stealth,shorten >=-3mm},
xmin=-10,xmax=10,
ymin=-10,ymax=10,
grid=both,
grid style={draw=gray!25},
xtick={-10, -8, ..., 10}, xtick style={yshift=-0.5ex},
ytick={-10, -8, ..., 10}, ytick style={xshift=-0.5ex},
yticklabel style={xshift=-0.5ex},
minor tick num=1,
minor tick length=0.5ex,
minor x tick style={yshift=0.25ex}, minor y tick style={xshift=0.25ex},
]
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}
或者使用 x 和 y 标签。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{center}
\begin{tikzpicture}
\begin{axis}[
axis lines=middle,
axis line style={-stealth,shorten >=-3mm},
xmin=-10,xmax=10,
ymin=-10,ymax=10,
xlabel=$x$,
every axis x label/.style={at={(xticklabel cs:1,0)},
yshift=1.8em,
anchor=south west},
ylabel=$y$,
every axis y label/.style={at={(yticklabel cs:1,0)},
xshift=2.7em,yshift=0.2em,
anchor=south east},
grid=both,
grid style={draw=gray!25},
xtick={-10, -8, ..., 10}, xtick style={yshift=-0.5ex},
ytick={-10, -8, ..., 10}, ytick style={xshift=-0.5ex},
yticklabel style={xshift=-0.5ex},
minor tick num=1,
minor tick length=0.5ex,
minor x tick style={yshift=0.25ex}, minor y tick style={xshift=0.25ex},
]
\end{axis}
\end{tikzpicture}
\end{center}
\end{document}