pgfplots 不同图层上的标记和线条

pgfplots 不同图层上的标记和线条

当我用tikz图片pgfplots 环境中我遇到的问题是线条和标记不在同一层上。例如,线条 2 绘制在线 1 上方,但线条 1 的标记绘制在线 2 上方但在线 2 的标记下方。最后,我还想在图中绘制两个节点。但这些线条位于标记下方,即使我将它们绘制在最后。这是我的示例,其中蓝色和红色标记位于所有其他线条之上:

\documentclass[12pt]{standalone}

 \usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usetikzlibrary{plotmarks}

\begin{document}

\tikzset{every picture/.style={mark repeat=2}}
\begin{tikzpicture}
    \begin{axis}[%
        width=13pc,
        height=16pc,
        scale only axis,
        xmin=-150,
        xmax=150,
        xlabel={Magnetic field strength $H$ (A/m)},
        xmajorgrids,
        ymin=-0.2,
        ymax=0.2,
        ylabel={Magnetic Flux density $B$ (T)},
        ymajorgrids
        ]

        \addplot [
        color=red,
        solid,
        line width=1.0pt,
        mark size=2.5pt,
        mark=x,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -50.5816497802734 -0.1065673828125\\
        -49.0505828857422 -0.105224609375\\
        -47.0889282226563 -0.10009765625\\
        -45.5736541748047 -0.10009765625\\
        -44.0070343017578 -0.10009765625\\
        -42.3993225097656 -0.09765625\\
        -40.689697265625 -0.092529296875\\
        -39.3039855957031 -0.092529296875\\
        -37.411865234375 -0.0899658203125\\
        -36.3816680908203 -0.088623046875\\
        -34.6704559326172 -0.0848388671875\\
        -33.4948883056641 -0.0836181640625\\
        -31.8468933105469 -0.0810546875\\
        -31.0220947265625 -0.0771484375\\
        -28.3865661621094 -0.0784912109375\\
        -33.0524749755859 -0.075927734375\\
        -69.1204986572266 -0.0911865234375\\
        -94.3042755126953 -0.1141357421875\\
        -113.249969482422 -0.138427734375\\
        -126.323394775391 -0.16650390625\\
        -134.85334777832 -0.189453125\\
        -141.303146362305 -0.2110595703125\\
        };

        \addplot [
        color=blue,
        solid,
        line width=1.0pt,
        mark size=1.8pt,
        mark=square,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -78.3354034423828 -0.0433349609375\\
        -97.7914581298828 -0.0433349609375\\
        -92.4113616943359 -0.0623779296875\\
        -83.7226104736328 -0.05859375\\
        -104.369247436523 -0.0751953125\\
        -84.6027069091797 -0.076416015625\\
        -103.263214111328 -0.0789794921875\\
        -99.5595550537109 -0.096923828125\\
        -89.9598999023438 -0.096923828125\\
        -110.728988647461 -0.1083984375\\
        -90.9166259765625 -0.1134033203125\\
        -109.801498413086 -0.11474609375\\
        -106.663497924805 -0.132568359375\\
        -96.3883666992188 -0.132568359375\\
        -117.817138671875 -0.1466064453125\\
        -97.7511749267578 -0.150390625\\
        -116.598907470703 -0.154296875\\
        -113.685287475586 -0.1695556640625\\
        -104.640228271484 -0.168212890625\\
        -126.403182983398 -0.1810302734375\\
        -106.021209716797 -0.18994140625\\
        -126.411865234375 -0.188720703125\\
        -122.742980957031 -0.2103271484375\\
        };
        \addplot [
        color=green,
        solid,
        line width=1.0pt,
        mark size=2.5pt,
        mark=o,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -94.0001068115234 -0.11993408203125\\
        -102.187194824219 -0.12750244140625\\
        -107.515151977539 -0.13775634765625\\
        -110.865661621094 -0.14544677734375\\
        -113.445907592773 -0.15435791015625\\
        -115.765426635742 -0.16583251953125\\
        -117.892974853516 -0.17474365234375\\
        -119.951797485352 -0.18243408203125\\
        -122.001922607422 -0.19256591796875\\
        -124.731475830078 -0.19891357421875\\
        -126.528793334961 -0.20916748046875\\
        };
        \draw [<->,thick] (axis cs:-120,-0.155) -- node[below]{d$H$} (axis cs:-30,-0.155) ;
        \draw [<->,thick] (axis cs:-26,-0.155) -- node[right]{d$B$} (axis cs:-26,-0.076) ;


    \end{axis}
\end{tikzpicture}%
\end{document}

有什么方法可以让我把标记放在与各自线条相同的图层上吗?

答案1

您可以设置clip mode=individual:这样,绘图标记将直接放置在其各自线条的顶部,并且后续绘图将绘制在先前绘图的顶部:

\documentclass[12pt]{standalone}

 \usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usetikzlibrary{plotmarks}

\begin{document}

\tikzset{every picture/.style={mark repeat=2}}
\begin{tikzpicture}
    \begin{axis}[%
        width=13pc,
        height=16pc,
        scale only axis,
        xmin=-150,
        xmax=150,
        xlabel={Magnetic field strength $H$ (A/m)},
        xmajorgrids,
        ymin=-0.2,
        ymax=0.2,
        ylabel={Magnetic Flux density $B$ (T)},
        ymajorgrids,
        clip mode=individual
        ]

        \addplot [
        color=red,
        solid,
        line width=1.0pt,
        mark size=2.5pt,
        mark=x,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -50.5816497802734 -0.1065673828125\\
        -49.0505828857422 -0.105224609375\\
        -47.0889282226563 -0.10009765625\\
        -45.5736541748047 -0.10009765625\\
        -44.0070343017578 -0.10009765625\\
        -42.3993225097656 -0.09765625\\
        -40.689697265625 -0.092529296875\\
        -39.3039855957031 -0.092529296875\\
        -37.411865234375 -0.0899658203125\\
        -36.3816680908203 -0.088623046875\\
        -34.6704559326172 -0.0848388671875\\
        -33.4948883056641 -0.0836181640625\\
        -31.8468933105469 -0.0810546875\\
        -31.0220947265625 -0.0771484375\\
        -28.3865661621094 -0.0784912109375\\
        -33.0524749755859 -0.075927734375\\
        -69.1204986572266 -0.0911865234375\\
        -94.3042755126953 -0.1141357421875\\
        -113.249969482422 -0.138427734375\\
        -126.323394775391 -0.16650390625\\
        -134.85334777832 -0.189453125\\
        -141.303146362305 -0.2110595703125\\
        };

        \addplot [
        color=blue,
        solid,
        line width=1.0pt,
        mark size=1.8pt,
        mark=square,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -78.3354034423828 -0.0433349609375\\
        -97.7914581298828 -0.0433349609375\\
        -92.4113616943359 -0.0623779296875\\
        -83.7226104736328 -0.05859375\\
        -104.369247436523 -0.0751953125\\
        -84.6027069091797 -0.076416015625\\
        -103.263214111328 -0.0789794921875\\
        -99.5595550537109 -0.096923828125\\
        -89.9598999023438 -0.096923828125\\
        -110.728988647461 -0.1083984375\\
        -90.9166259765625 -0.1134033203125\\
        -109.801498413086 -0.11474609375\\
        -106.663497924805 -0.132568359375\\
        -96.3883666992188 -0.132568359375\\
        -117.817138671875 -0.1466064453125\\
        -97.7511749267578 -0.150390625\\
        -116.598907470703 -0.154296875\\
        -113.685287475586 -0.1695556640625\\
        -104.640228271484 -0.168212890625\\
        -126.403182983398 -0.1810302734375\\
        -106.021209716797 -0.18994140625\\
        -126.411865234375 -0.188720703125\\
        -122.742980957031 -0.2103271484375\\
        };
        \addplot [
        color=green,
        solid,
        line width=1.0pt,
        mark size=2.5pt,
        mark=o,
        mark options={solid},
        forget plot
        ]
        table[row sep=crcr]{
        -94.0001068115234 -0.11993408203125\\
        -102.187194824219 -0.12750244140625\\
        -107.515151977539 -0.13775634765625\\
        -110.865661621094 -0.14544677734375\\
        -113.445907592773 -0.15435791015625\\
        -115.765426635742 -0.16583251953125\\
        -117.892974853516 -0.17474365234375\\
        -119.951797485352 -0.18243408203125\\
        -122.001922607422 -0.19256591796875\\
        -124.731475830078 -0.19891357421875\\
        -126.528793334961 -0.20916748046875\\
        };
        \draw [<->,thick] (axis cs:-120,-0.155) -- node[below]{d$H$} (axis cs:-30,-0.155) ;
        \draw [<->,thick] (axis cs:-26,-0.155) -- node[right]{d$B$} (axis cs:-26,-0.076) ;


    \end{axis}
\end{tikzpicture}%
\end{document}

答案2

类似地,如果你添加\pgfplotsset{set layers}after\begin{tikzpicture}和 before \begin{axis},然后给出mark layer=like plot选项,标记将与它们所属的图分组。结果如下

在此处输入图片描述

相关内容