我找到了问题的答案这里。不过我有一个相关的问题。MWE 可能正是链接问题的答案,所以我在这里只插入“感兴趣的部分”(如果我必须复制整个代码,请告诉我)
\nextgroupplot[ymin=45,ymax=80,
ytick={60,80},
axis x line=top,
axis y discontinuity=parallel,
height=4.5cm]
\addplot {x*0};
\addplot {x^2+50};
\nextgroupplot[ymin=0,ymax=5,
ytick={0},
axis x line=bottom,
height=2.0cm]
\addplot {x*0};
\addplot {x^2+50};
有一点我不太清楚。我ymin=45,ymax=80
在第一组和ymin=0,ymax=5
第二组中读到,两个范围之间的比率是 7。因此,我本来希望height
指定这两个 s,使得它们的比率恰好是 7。事实并非如此。有人能向我解释原因吗?我应该如何选择height
与两个图的 y 范围相关的两个参数(如果它们相关!)以获得相同的单位长度?
答案1
我认为这只是反复试验在引用的问题/答案中。但我生成了一个“分析”方法:
代码
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{pgfplots.groupplots}
\begin{document}
\pgfplotsset{
% override style for non-boxed plots
% which is the case for both sub-plots
every non boxed x axis/.style={}
}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group name=my fancy plots,
group size=1 by 2,
xticklabels at=edge bottom,
vertical sep=0pt
},
width=8.5cm,
height=6.5cm,
xmin=-6,
xmax=6,
scale only axis = true,
enlargelimits=false,
]
% top diagram
\nextgroupplot[
ymin=50,
ymax=100,
ytick={50,60,75,100},
axis x line=top,
axis y discontinuity=parallel,
height=5cm,
axis y line=right,
ymajorgrids=true,
]
% red line
\addplot+[red,no markers,line width=2pt]{x^2+50};
% bottom diagram
\nextgroupplot[
ymin=0,
ymax=10,
ytick={0,10},
axis x line=bottom,
height=1cm
]
% blue line
\addplot+[blue,no markers,line width=2pt]{x*0};
\end{groupplot}
\end{tikzpicture}
\end{document}
输出
证明
我还添加了一个“证明”,证明顶部和底部图表中的距离(缩放比例、尺度)是相等的。
解释
- 重要的代码部分是
scale only axis = true
和enlargelimits=false
。以下是来自pgfplots 手册。
如果
scale only axis
已启用,width
并且height
仅适用于轴矩形。因此,生成的图形大于width
和height
(因为有任何轴描述)。然而,轴箱恰好具有规定的目标尺寸。
- 现在您可以控制缩放了。
- 我在上图中选择了 50 到 100 的范围。
- 我在下图中选择了 0 到 10 的范围。
- 的比例
height
应为 (100-50)/(10-0)=5。 - 因此,上图有一个
height
具有5 厘米底部有一个height
有1 厘米。 - 我添加了一个证明(见第二张图片)。
height
下图的设置为 1 厘米(10 毫米),我在 Adobe Acrobat 中测量了它。如您所见,轴的高度正好是 10 毫米。此外,您可以看到,在两个图(顶部和底部)中,y 中的 10 增量也是 10 毫米。这意味着缩放比例相同。 - 顶部
axis y line
在right
。否则 10 和 50 就会重叠。