假设我想在文档中放置一个整洁的正弦函数图。其源代码是:
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[
xmin=-11, xmax=11,
ymin=-1.2, ymax=1.2,
grid=both,
axis lines=middle,
minor tick num=9,
axis line style={latex-latex},
ticklabel style={font=\tiny},
axis equal
]
\addplot[line width=0.7pt, blue, samples=500][domain=-11:11]{sin((x*180)/pi)};
\end{axis}
\end{tikzpicture}
\end{document}
并产生以下结果:
到目前为止一切顺利。但是,假设我想将图表很好地塞进一页,而又不占用太多空间。为此,我想在两侧“切割” y 轴,换句话说,我想强制图表仅在间隔 (a,b)(在 y 轴上)上呈现,而不改变图表的纵横比或其大小。
为此,我写了ymin=-1.2, ymax=1.2
,正如你在我的 MWE 中看到的那样。但这对图表没有影响!为什么?我在网上搜索了很长时间来寻找解决问题的方法,但一无所获。
请为我提供一种技术,让我能够完成这项任务。这可以限制渲染整个轴的间隔x 轴,而不仅仅是 y 轴(在本例中不会用到,但在我未来的工作中肯定会有用)。提前谢谢您!
答案1
ymin
/ymax
不起作用的原因是我认为您有axis equal
,并且您没有改变轴的宽度/高度,因此使用默认大小。
如果您删除axis equal
y 限制,则会应用,但 x 和 y 单位向量将不相等,如果我理解正确的话,这是您想要的。
width=10cm,height=4cm
因此,请尝试通过添加类似的内容来设置大小axis options
。
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-11, xmax=11,
ymin=-1.2, ymax=1.2,
width=10cm,height=4cm,
grid=both,
axis lines=middle,
minor x tick num=9,
minor y tick num=2,
axis line style={latex-latex},
ticklabel style={font=\tiny},
axis equal
]
\addplot[line width=0.7pt, blue, samples=500, domain=-11:11]{sin((x*180)/pi)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
使用axis equal image
而不是axis equal
。
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[]
\begin{axis}[
xmin=-11, xmax=11,
ymin=-2, ymax=2,
grid=both,
axis lines=middle,
minor x tick num=9,
minor y tick num=1,
axis line style={latex-latex},
ticklabel style={font=\tiny},
axis equal image
]
\addplot[line width=0.7pt, blue, samples=500][domain=-11:11]{sin((x*180)/pi)};
\end{axis}
\end{tikzpicture}
\end{document}