Я пытаюсь нарисовать двумерную систему координат с числами на осях. Вот код, который я пытаюсь:
\documentclass[12pt,oneside]{report}
\usepackage{tikz}
\usetikzlibrary{arrows,calc}
\begin{document}
\begin{figure}[!h]
\centering
\begin{tikzpicture}
\newcommand*{\TickSize}{2pt}%
\draw [-latex] (-0.5,0) -- (4.5,0);% x-axis
\draw [-latex] (0,-0.5) -- (0,4.5);% y-axis
\foreach \x in {1,...,4} {%
\draw ($(\x,0)+(\x,-\TickSize)$) -- ($(\x,0)+(\x,\TickSize)$)
node [below,yshift=-2pt] {$\x$};
}
\foreach \y in {1,...,4} {%
\draw ($(0,\y)+(-\TickSize,\y)$) -- ($(0,\y)+(\TickSize,\y)$)
node [left,xshift=-2pt] {$\y$};
}
\end{tikzpicture}
\end{figure}
\end{document}
Но из этого я получаю следующий результат:
Который я не аспектировал, так как числа выходят за пределы оси. Это решение было вдохновлено этимнить, и там, по всей видимости, автор с этой проблемой не сталкивался.
Спасибо.
решение1
Оператор \draw ($(\x,0)+(\x,-\TickSize)$)
добавляет \x
координату дважды, тем самым удваивая масштаб размещения делений и чисел. То же самое и в \y
.
И, как добавляет Торбьорн, в этом случае координаты не обязательно вычислять внутри $
ограниченной фразы, их можно указать напрямую.
\documentclass[12pt,oneside]{report}
\usepackage{tikz}
\usetikzlibrary{arrows,calc}
\begin{document}
\begin{figure}[!h]
\centering
\begin{tikzpicture}
\newcommand*{\TickSize}{2pt}%
\draw [-latex] (-0.5,0) -- (4.5,0);% x-axis
\draw [-latex] (0,-0.5) -- (0,4.5);% y-axis
\foreach \x in {1,...,4} {%
\draw (\x,-\TickSize) -- (\x,\TickSize)
node [below,yshift=-2pt] {$\x$};
}
\foreach \y in {1,...,4} {%
\draw (-\TickSize,\y) -- (\TickSize,\y)
node [left,xshift=-2pt] {$\y$};
}
\end{tikzpicture}
\end{figure}
\end{document}