组图中的第二个 y 轴

组图中的第二个 y 轴

我想在 groupplot 中添加第二个 y 轴。如果有更好/更简单的方法来获得我想要的图(见图),我愿意不使用 groupplot。

在此处输入图片描述

\documentclass[tikz]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\pgfplotsset{every  tick/.style={black,},width=10cm}
\pgfplotsset{compat=newest}
\usetikzlibrary{pgfplots.groupplots}

\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
            group style={
        group name=plots,
        group size=1 by 2,
        xlabels at=edge bottom,
        xticklabels at=edge bottom,
        vertical sep=0pt,
        }, xlabel=x,xmin=0, xmax=100,xtick align=outside,xtick pos=left
        ]

\nextgroupplot[ymin=0, ymax=1000, ylabel= y1,height=6cm, ytick align=outside,ytick pos=left]

\nextgroupplot[ymin=0, ymax=10, ylabel= y3, ytick={2,4,6,8},height=4cm,ytick align=outside,ytick pos=left]  

\end{groupplot}
\end{tikzpicture}

\end{document}

答案1

pgfplots手册中有一个例子,说明如何使两个坐标与一个法线相同axis,并且基本上可以使用相同的技术groupplots

一些关键点:

  • groupplots在同一个中添加两个环境tikzpicture
  • 为所有轴设置相同的xmin和。xmax
  • 添加scale only axis以便缩放选项仅适用于轴,而不适用于标签等。
  • 在您的代码中ytick pos=left,将其更改right为第二个groupplots,其中纵坐标位于右侧。
  • 使用axis y line=leftaxis y line=right仅在一侧打印 y 轴线。
  • 类似地,axis x line=none第二个groupplots关闭 x 轴线的打印。

在此处输入图片描述

\documentclass[tikz,border=5mm]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\pgfplotsset{every  tick/.style={black,},width=10cm}
\pgfplotsset{compat=newest}
\usetikzlibrary{pgfplots.groupplots}

\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
            group style={
        group size=1 by 2,
        xlabels at=edge bottom,
        xticklabels at=edge bottom,
        vertical sep=0pt,
        },
        xlabel=$x$,
        xmin=0, xmax=100,
        xtick align=outside,xtick pos=left,
        scale only axis,
        ytick align=outside,
        ytick pos=left,
        axis y line=left
        ]

\nextgroupplot[ymin=0, ymax=1000, ylabel=$y_1$,height=6cm, ytick align=outside,ytick pos=left,axis y line=left]

\nextgroupplot[ymin=0, ymax=10, ylabel=$y_3$, ytick={2,4,6,8},height=4cm,]  

\end{groupplot}

\begin{groupplot}[
        group style={
             group name=plots,
             group size=1 by 2,
             xlabels at=edge bottom,
             xticklabels at=edge bottom,
             vertical sep=0pt,
        },
        xmin=0, xmax=100,
        scale only axis,
        ytick align=outside,
        ytick pos=right,
        axis y line=right,
        axis x line=none
        ]

\nextgroupplot[ymin=0,ymax=500,
               ylabel=$y_2$,
               height=6cm,
]

\nextgroupplot[ymin=0,ymax=100,
               ylabel= $y_4$,
               height=4cm,
               ytick={20,40,60,80}]  

\end{groupplot}
\end{tikzpicture}

\end{document}

相关内容