我有一张包含三张图和两个 y 轴的图表。其中两张图使用左 y 轴,一张图使用右 y 轴。为了获得包含所有三张图的单个图例,我使用了这个博客和这个答案。
但是,图例条目出现在错误的图旁边:
我感觉自己忠实地遵循了这个想法,但显然我做错了什么。你能帮忙吗?
梅威瑟:
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line*=left,
ylabel={Red and Blue},
]
\addplot[red] coordinates{ (0,0) (1,1) (2,2) (3,3) }; \label{plot_red}
\addplot[blue] coordinates{ (0,1) (1,2) (2,3) (3,4) }; \label{plot_blue}
\end{axis}
\begin{axis}[
axis y line*=right,
ylabel={Green},
]
\addplot[green] coordinates{ (0,2) (1,3) (2,4) (3,5) }; \label{plot_green}
\addlegendimage{/pgfplots/refstyle=plot_red}\addlegendentry{red line}
\addlegendimage{/pgfplots/refstyle=plot_blue}\addlegendentry{blue line}
\addlegendimage{/pgfplots/refstyle=plot_green}\addlegendentry{green line}
\end{axis}
\end{tikzpicture}
\end{document}
顺便说一句,如果我将所有三个图放在同一个 y 轴上,它就可以正常工作。
答案1
这实际上只是排序问题。您需要在图表之前添加图像(在本例中)。
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line*=left,
ylabel={Red and Blue},
]
\addplot[red] coordinates{ (0,0) (1,1) (2,2) (3,3) }; \label{plot_red}
\addplot[blue] coordinates{ (0,1) (1,2) (2,3) (3,4) }; \label{plot_blue}
\end{axis}
\begin{axis}[
axis y line*=right,
ylabel={Green},
]
\addlegendimage{/pgfplots/refstyle=plot_red}\addlegendentry{red line}
\addlegendimage{/pgfplots/refstyle=plot_blue}\addlegendentry{blue line}
\addlegendimage{/pgfplots/refstyle=plot_green}\addlegendentry{green line}
\addplot[green] coordinates{ (0,2) (1,3) (2,4) (3,5) }; \label{plot_green}
\end{axis}
\end{tikzpicture}
\end{document}