虚线轴线

虚线轴线

如何使从原点到每个坐标的轴线变成虚线?例如,我希望从 (0,0,0) 到 (0,0,1) 的轴线为虚线。

\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[scale=1]
  \begin{axis}[view={40}{20}, ticks = none, axis on top, axis lines=center, y
    dir=reverse, ymin=0, ymax=2, xmin=0, xmax=2, zmin=0, zmax=2,
    xlabel=$p_{1}$, ylabel=$p_{2}$, zlabel=$p_{3}$, every axis y label/.append
    style={at=(ticklabel* cs:0)}]

  \addplot3[thick,mark=*] coordinates {(1,0,0) (0,1,0) (0,0,1)} --cycle;
  \node [above right] at (axis cs:1,0,0) {$(1,0,0)$};
  \node [above left] at (axis cs:0,1,0) {$(0,1,0)$};
  \node [above right] at (axis cs:0,0,1) {$(0,0,1)$};
  \end{axis}
\end{tikzpicture}
\end{document}

答案1

也许我的方法过于简单 -dashed white使用

\draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 0,0,1);
\draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 0,1,0);
\draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 1,0,0);

您需要注释掉axis on top,它才能使其起作用。

截屏

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass[tikz]{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[scale=1]
    \begin{axis}[
            view={40}{20}, 
            ticks = none, 
            %axis on top, 
            axis lines=center, y
            dir=reverse, 
            ymin=0, ymax=2, xmin=0, xmax=2, zmin=0, zmax=2,
            xlabel=$p_{1}$, ylabel=$p_{2}$, zlabel=$p_{3}$, 
            every axis y label/.append style={at=(ticklabel* cs:0)},
        ]
        \addplot3[thick,mark=*] coordinates {(1,0,0) (0,1,0) (0,0,1)} --cycle;
        \node [above right] at (axis cs:1,0,0) {$(1,0,0)$};
        \node [above left] at (axis cs:0,1,0) {$(0,1,0)$};
        \node [above right] at (axis cs:0,0,1) {$(0,0,1)$};
        \draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 0,0,1);
        \draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 0,1,0);
        \draw[dashed,white] (axis cs: 0,0,0)--(axis cs: 1,0,0);
    \end{axis}
\end{tikzpicture}
\end{document}

如果你仔细观察,你会发现它们axis仍然存在。这可能是好事也可能是坏事……如果你根本不想看到它们,请添加以下thick命令draw

        \draw[dashed,white,thick] (axis cs: 0,0,0)--(axis cs: 1,0,0);

答案2

这个老问题有一个解决方案,即绘制白色虚线图案以隐藏部分轴。这会产生伪影,因此这里为任何需要它的人提供了另一种解决方案。

\documentclass[border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
view={40}{20},
ticks=none,
axis lines=center,
y dir=reverse,
xmin=0, xmax=2,
ymin=0, ymax=2,
zmin=0, zmax=2,
xlabel=$p_{1}$, ylabel=$p_{2}$, zlabel=$p_{3}$,
every axis y label/.append style={at=(ticklabel* cs:0)},
x axis line style={draw=none, insert path={(axis cs:0,0,0) edge[draw, dashed, -] (axis cs:1,0,0) (axis cs:1,0,0) edge (axis cs:2,0,0)}},
y axis line style={draw=none, insert path={(axis cs:0,0,0) edge[draw, dashed, -] (axis cs:0,1,0) (axis cs:0,1,0) edge (axis cs:0,2,0)}},
z axis line style={draw=none, insert path={(axis cs:0,0,0) edge[draw, dashed, -] (axis cs:0,0,1) (axis cs:0,0,1) edge (axis cs:0,0,2)}},
]
\addplot3[thick,mark=*] coordinates {(1,0,0) (0,1,0) (0,0,1)} -- cycle;
\end{axis}
\end{tikzpicture}
\end{document}

3D 轴部分虚线

相关内容