我正在尝试为我的 3d 图添加第二个标签,但我不知道如何正确执行。我的想法是添加第二个轴,没有任何网格、刻度、线条,只有标签,并将其覆盖在第一个图上。然而,我似乎无法
- 正确放置第二个轴标签,并
- 使第二个轴除了其标签外不可见。
这是我所做工作的一个简短示例:
\begin{tikzpicture}
% This is the plot itself
\begin{axis}[domain=-1:1,view={135}{45},xlabel style={sloped},ylabel style={sloped},zlabel style={sloped},xlabel=$x$,ylabel=$y$,zlabel=$z$]
\addplot3[] coordinates {(1,0,0) (0,0,1)};
\end{axis}
% This is the invisible plot that should only add labels to the first plot
\begin{axis}[domain=-1:1,view={135}{45},grid=none,xlabel style={sloped},ylabel style={sloped},xlabel=$X$,ylabel=$Y$,xtick=\empty,ytick=\empty,ztick=\empty,axis z line=none,x axis line style={transparent},y axis line style={transparent}]
\addplot3[mark=none] coordinates {(0,0,0)}; % for a correct viewing angle
\end{axis}
\end{tikzpicture}
我附加了一个文件,其中显示了我实际得到的结果,并暗示了(红色)我试图得到的结果。在这个例子中,它看起来不太好,但透明度并没有按预期工作,第二个“不可见”图的线条仍然清晰可见,并自然地绘制在第一个图的顶部。
我的图片:我拥有的是黑色,我想要的是红色。
如果有人知道如何解决这个问题,我会很高兴。或者也许有完全不同的方法可以实现这一点。
答案1
Torbjorn 的解决方案已经具有正确的位置。旋转可以通过sloped like x axis
及其变体实现:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-1:1,view={135}{45},
xlabel style={sloped},
ylabel style={sloped},
zlabel style={sloped},
xlabel=$x$,
ylabel=$y$,
zlabel=$z$,
clip=false]
\addplot3[mark=none] coordinates {(1,0,0) (0,0,1)};
\node at (rel axis cs:0,0.5,1) [above,sloped like y axis] {a long $x$ label};
\node at (rel axis cs:0.5,0,1) [above,sloped like x axis] {a long $y$ label};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,这实际上是轴内sloped
某个变体的别名。sloped like x axis
答案2
您可以使用rel axis cs
坐标系并手动添加标签。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=-1:1,view={135}{45},xlabel style={sloped},ylabel style={sloped},zlabel style={sloped},xlabel=$x$,ylabel=$y$,zlabel=$z$,clip=false]
\addplot3[mark=none] coordinates {(1,0,0) (0,0,1)};
\node at (rel axis cs:0,0.5,1) [above,rotate=-25] {$X$};
\node at (rel axis cs:0.5,0,1) [above,rotate=25] {$Y$};
\end{axis}
\end{tikzpicture}
\end{document}