Tikz 图手动设置图例条目

Tikz 图手动设置图例条目

我有一个情节,其中只有一条实际情节线和两个draw放入情节区域的东西。一条水平线和一个圆圈,我希望它们都出现在图例中。

我尝试使用,\addlegendimage{...}但没有效果。如何让线条和圆圈在图例中正确显示?

以下是针对我的问题的 MWE:

\documentclass[a4paper]{article} 
\usepackage{amsmath} 
\usepackage{tikz}
 \usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{pgfplots, pgfplotstable}    

\begin{document} 
\begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
          ymin=70,
          ymax=100,
          legend style={at={(0.5,0.5)},
          anchor=west,legend columns=1},
         % xtick=data,
          legend style={font=\small},
          legend entries={diagonal-line,
                          dashed-line,
                          circle
                          }
         ]

   \addlegendimage{line width=0.3mm,color=purple, mark=|}
   \addplot[mark=|,purple] coordinates {
    (100, 98.4)
    (99, 97.5)
    (98, 96.5)
    (97, 95.5)

   };    

\addlegendimage{line width=0.8mm,style=dashed,color=orange}
\draw [dashed] (axis cs: 100, 96.4) -- (axis cs: 90, 96.4);

\addlegendimage{mark=x}
\draw (axis cs: 97.5, 96.1) node[circle,fill=black,scale=0.5,color=black] {}; 


\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

答案1

\addplot已经为图例定义了一个图像。因此您不能为图表定义额外的图例图像。

如果您将\draw命令更改为,则\addplot没有\addlegendimage必要。

\documentclass[a4paper]{article} 
\usepackage{pgfplots}% loads tikz and graphicx
\pgfplotsset{compat=1.13}% <- set a value for compat!!
\begin{document} 
\begin{figure}
\begin{tikzpicture}
      \begin{axis}[
          ymin=70,
          ymax=100,
          legend style={at={(0.5,0.5)},
          anchor=west,legend columns=1},
         % xtick=data,
          legend style={font=\small},
          legend entries={diagonal-line,
                          dashed-line,
                          circle
                          }
         ]

        \addplot[mark=|,purple] coordinates {
          (100, 98.4)
          (99, 97.5)
          (98, 96.5)
          (97, 95.5)
        };
        \addplot[dashed,line width=.8mm,orange] (100, 96.4) -- (90, 96.4);
        \addplot[mark=*,only marks] coordinates{(97.5, 96.1)};
    \end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

注意自1.11版本起这axis cs是默认坐标系。

在此处输入图片描述


如果您想要使用,\draw则仅为此命令定义自己的图例图像。

\documentclass[a4paper]{article} 
\usepackage{pgfplots}% loads tikz and graphicx
\pgfplotsset{compat=1.13}% <- set a value for compat!!
\begin{document} 
\begin{figure}
    \begin{tikzpicture}
        \begin{axis}[
          ymin=70,
          ymax=100,
          legend style={at={(0.5,0.5)},
          anchor=west,legend columns=1},
         % xtick=data,
          legend style={font=\small},
          legend entries={diagonal-line,
                          dashed-line,
                          circle
                          }
         ]
        \addplot[mark=|,purple] coordinates {
          (100, 98.4)
          (99, 97.5)
          (98, 96.5)
          (97, 95.5)
        };    

        \draw[dashed,line width=.8mm,orange] (100, 96.4) -- (90, 96.4);
        \addlegendimage{dashed,line width=.8mm,orange}

        \draw (97.5, 96.1) node[circle,fill=black,scale=0.5,color=black] {}; 
        \addlegendimage{mark=*,only marks}

        \end{axis}
    \end{tikzpicture}
\end{figure}
\end{document}

相关内容