当我使用animate
包装轴标签随着刻度移动而开始跳动和弹跳,我该如何阻止这种情况发生?另外:
- 如何让动画更流畅?增加帧速率只会使其更快。
- 如何提高编译性能?我读到过一些文章说样本的影响很大,但使用
600
already 会让图看起来很奇怪。(目前正在3~4分钟! - 我也希望有无限的域,但是给了我错误
dimension too large
平均能量损失
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepackage{calc}
\usepackage{animate}
\begin{document}
\begin{animateinline}[controls,autopause,poster=2,buttonbg=1]{15}
\multiframe{60}{rY=0.5+0.5, rX=100+200}{%
\begin{tikzpicture}
\begin{axis}[
% axis equal image=true,
width=10cm,
height=10cm,
scale only axis,
minor tick num=3,
xmin=0.05,
xmax=\rX,%10000,
ymin=0.05,
ymax=\rY,
ylabel = Yada y,
xlabel = Yada x
]
\addplot[red,thick,smooth,samples=600,domain=0:5000] {0.8*x^0.15};
\addplot[blue,thick,domain=0:5000] {2.5 + 0.00032*x^1}; %domain=0:5000
\end{axis}
\end{tikzpicture}
}
\end{animateinline}
\end{document}
答案1
所有帧都需要共享相同的边界框。
使用时animate
,从第二帧开始的所有帧都将被挤压/拉伸以适合第一帧的边界框,该边界框用于缩放动画小部件。
为了确保所有框架都具有相同的大小,请添加类似
\useasboundingbox (-2,-2) rectangle (12,12);
在环境开始时tikzpicture
。您可能希望使用rectangle
角坐标来减少绘图周围的白色边缘:
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepackage{calc}
\usepackage{animate}
\begin{document}
\begin{animateinline}[controls,autopause,poster=2,buttonbg=1]{15}
\multiframe{60}{rY=0.5+0.5, rX=100+200}{%
\begin{tikzpicture}
\useasboundingbox (-2,-2) rectangle (12,12);
\begin{axis}[
% axis equal image=true,
width=10cm,
height=10cm,
scale only axis,
minor tick num=3,
xmin=0.05,
xmax=\rX,%10000,
ymin=0.05,
ymax=\rY,
ylabel = Yada y,
xlabel = Yada x
]
\addplot[red,thick,smooth,samples=600,domain=0:5000] {0.8*x^0.15};
\addplot[blue,thick,domain=0:5000] {2.5 + 0.00032*x^1}; %domain=0:5000
\end{axis}
\end{tikzpicture}
}
\end{animateinline}
\end{document}
至于编译性能,除了外部化 TikZ 图形外,没有太多事情要做。图表以解析表达式的形式给出,由 PGF 数学引擎(在 TeX 中实现)计算。