I my opinion the better approach here is a scope. In it you can define your axes and all you draw inside is referred at these axes. As an example:
\documentclass[border=2mm]{standalone}
\usepackage {tikz}
\tikzset%
{%
red axis/.style={thick,red!50!black},
green axis/.style={thick,green!50!black},
}
\begin{document}
\begin{tikzpicture}[line cap=round]
% x, ct axes (red)
\begin{scope} % this scope in not really necessary
\draw[red axis] (-5,0) -- (5,0);
\draw[red axis] (0,-5) -- (0,5);
\foreach\i in {1,...,5}
{% ticks
\draw[red axis] (-\i,-0.05) -- (-\i,0.05);
\draw[red axis] ( \i,-0.05) -- ( \i,0.05);
\draw[red axis] (-0.05,-\i) -- (0.05,-\i);
\draw[red axis] (-0.05, \i) -- (0.05, \i);
}
\draw[gray,dashed] (1,0) -- (1,1) -- (0,1);
\draw[gray,dashed] (4,0) -- (4,1);
\draw[gray,dashed] (0,4) -- (1,4);
\draw[red] (1,1) -- (4,1) -- (4,4) -- (1,4) -- cycle;
\draw[red] (2.5,2.5) circle (1.5);
\node at (5,0) [right] {$x$};
\node at (0,5) [above] {$ct$};
\node at (1,0) [below] {$u$};
\node at (0,1) [left] {$u$};
\end{scope}
% x', ct' axes (green)
\begin{scope}[x={(30:1.5 cm)}, y={(60:1.5 cm)}]
\draw[green axis] (-5,0) -- (5,0);
\draw[green axis] (0,-5) -- (0,5);
\foreach\i in {1,...,5}
{% ticks
\draw[green axis] (-\i,-0.05) -- (-\i,0.05);
\draw[green axis] ( \i,-0.05) -- ( \i,0.05);
\draw[green axis] (-0.05,-\i) -- (0.05,-\i);
\draw[green axis] (-0.05, \i) -- (0.05, \i);
}
\draw[gray,dashed] (1,0) -- (1,1) -- (0,1);
\draw[gray,dashed] (4,0) -- (4,1);
\draw[gray,dashed] (0,4) -- (1,4);
\draw[green] (1,1) -- (4,1) -- (4,4) -- (1,4) -- cycle;
\draw[green] (2.5,2.5) circle (1.5);
\node at (5,0) [right] {$x'$};
\node at (0,5) [above] {$ct'$};
\node at (1,0) [below] {$u'$};
\node at (0,1) [left] {$u'$};
\end{scope}
\end{tikzpicture}
\end{document}

Note that in the green axes the ticks are not orthogonal, because neither are the axis. I prefer them as they are but if you need them to be orthogonal, as in your example, you need to draw them outside the scope environment.
calclibrary and a simple macro, for example). – SebGlav Jun 20 '21 at 11:05scopeenvironment with arotateparameter? Did you try something yet? – SebGlav Jun 20 '21 at 11:41