我想在 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=left
或axis 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}