0%

【漫漫科研路\pgfplots】多个子图共用一个图例

十月底,投完会议之后,便对科研写作方面遇到的问题进行了探索。问题主要有:


问题:

  1. 文献管理问题:在写论文的过程中,经常要引用他人文献,这时需要费时去寻找。另一方面,有时想要查看曾经读到的某篇文章提到的方法, 也需要去耗时去寻找。
  2. 画图问题:怎样画出好看的图?

解决方案:

  • 针对问题1: 使用JabRef
  • 针对问题2:使用Pgfplots

后面我将会用一系列文章来记录JabRef和Pgfplots的常用使用方法。本文介绍一下如何让多个子图共用一个图例

  • Case1: 所有的子图有相同的曲线
    图1

    实现代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    \documentclass{article}
    \usepackage[dvipdfm]{graphicx}
    \def\pgfsysdriver{pgfsys-dvipdfmx.def}
    \usepackage{tikz}
    \usepackage{pgfplots}
    \pgfplotsset{width=6cm,compat=1.15}
    \begin{document}
    \begin{center}
    \ref{named}\\%\pgfplotsplotfromname{named} instead of \ref{named} if the codes doesn't work
    \begin{tikzpicture}
    \begin{axis}[
    legend columns=-1,%the legend are plotted horizontally
    legend entries={$x$},
    legend to name=named,% stored in named
    title={subfig1},
    ]
    \addplot {x};
    \end{axis}
    \end{tikzpicture}
    \begin{tikzpicture}
    \begin{axis}[title={subfig2}]
    \addplot {x};
    \end{axis}
    \end{tikzpicture}
    \end{center}
    \end{document}
  • Case2: 子图有不同的曲线
    图2

    实现代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    \documentclass{article}
    \usepackage[dvipdfm]{graphicx}
    \def\pgfsysdriver{pgfsys-dvipdfmx.def}
    \usepackage{tikz}
    \usepackage{pgfplots}
    \pgfplotsset{width=6cm,compat=1.15}
    \usetikzlibrary{matrix}
    \usepgfplotslibrary{external}
    \newcommand*{\refne}[1]{\tikzexternaldisable\pgfplotsplotfromname{#1}\tikzexternalenable}%avoid conflict with the packet hyperref
    \begin{document}
    \begin{center}
    \begin{tikzpicture}
    %--define the legend by ourself
    \matrix[
    matrix of nodes,
    draw,
    inner sep=0.2em,
    ampersand replacement=\&,
    font=\scriptsize,
    anchor=east
    ]
    { \refne{x}\& $x$\\
    \refne{x2}\& $x^2$\\
    };
    \end{tikzpicture}\\

    \begin{tikzpicture}
    \begin{axis}[
    legend columns=-1,%the legend are plotted horizontally
    legend entries={$x$},
    legend to name=named,% stored in named
    title={subfig1},
    ]
    \addplot {x};\label{x}
    \end{axis}
    \end{tikzpicture}
    \begin{tikzpicture}
    \begin{axis}[title={subfig2}]
    \addplot[red] {x^2};\label{x2}
    \end{axis}
    \end{tikzpicture}
    \end{center}
    \end{document}

参考文献:
[1] pgfplots manual: http://pgfplots.sourceforge.net/pgfplots.pdf

[2]https://tex.stackexchange.com/questions/192729/pgfplots-trying-to-combine-legends

[3]https://tex.stackexchange.com/questions/383547/refnamed-pgfplot-externalization-and-hyperref-gives-warning-namepgfplotsli

坚持原创技术分享,您的支持将鼓励我继续创作!