Animate paketini kullanarak pgfplot grafiğini canlandırın
Bir arsa nasıl canlandırılacağını googledikten sonra, elde edemediğim farklı yollar buldum, bu yöntemi kullanmadan önce bazı animasyonlar yaptım . Sorum şu arsayı canlandırmak için aynı yöntemi kullanmak mümkün mü?
(Bu animasyona birkaç gün içinde ihtiyacım olduğu için diğer yöntemleri öğrenemiyorum)
\documentclass[tikz]{standalone}
\usetikzlibrary{animations}
\usepackage{animate}
\usepackage{ifthen}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{document}
\foreach \x in {0,1,...,20} {
\begin{tikzpicture}
\useasboundingbox (-3,-5) rectangle (9,10);
\begin{axis}[%title={test},
legend style={font=\fontsize{3}{3}\selectfont},
legend pos=south east,
axis lines=center,
domain=0.2:8,
xtick={0,1,...,7},
ytick={0,1,...,4},
samples=501,
xlabel={}]
\addplot [gray, dashed] {1};
\addplot [color=red] {1-exp(-\x)*cos(3*deg(\x))};
\end{axis}
\end{tikzpicture}
}
\end{document}
Yanıtlar
Mevcut problem için, çizim alanının üst sınırının canlandırılması gerekir.
\documentclass{standalone}
%\documentclass[dvisvgm]{standalone} % latex <file>.tex ; dvisvgm --font-format=woff2 --zoom=-1 --exact <file>.dvi
\usepackage[T1]{fontenc}
\usepackage{animate}
\usepackage{pgfplots}
\begin{document}
\begin{animateinline}[controls]{20}
\multiframe{81}{rXmax=0+0.1}{
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
domain=0.001:\rXmax,
xtick={0,1,...,8},
xmax=8.4,
ymax=1.6,
samples=501
]
\addplot [gray, dashed] {1};
\addplot [color=red] {1-exp(-x)*cos(3*deg(x))};
\end{axis}
\end{tikzpicture}
}
\end{animateinline}
\end{document}
Benim çözümüm kullanım gnuplotve derlenmelidir (sadece eğri noktalarının tablosunu almak için ilk defa) pdflatex.exe -shell-escape %.tex.
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usetikzlibrary{math,backgrounds}
\begin{document}
\foreach \xDom in {0.2,0.3,...,7.2} {
\begin{tikzpicture}[background rectangle/.style={fill=white},show background rectangle]
\tikzmath{
\samplePoints= int(\xDom*100);
\idFile= int(\xDom*10);
}
\begin{axis}[%title={test},
legend style={font=\fontsize{3}{3}\selectfont},
legend pos=south east,
axis lines=center,
domain=0.2:\xDom,
xmin=0.2,xmax=7.5,
ymin={1-exp(-0.2)*cos(3*deg(0.2))},
ymax=1.5,
xtick={0,1,...,7},
ytick={0,1,...,4},
samples=\samplePoints,
xlabel={}]
\draw[gray, dashed] (axis cs:0,1) -- (axis cs:7.2,1);
\addplot [color=red] gnuplot[id=gr\idFile] {1-exp(-x)*cos(3*x)};
\end{axis}
\end{tikzpicture}
}
\end{document}
Görülebileceği gibi, tikz resmine bir arka plan ekledim, çünkü GIF'e dönüşümün bu şekilde çok daha iyi olduğunu buldum (daha az takma ad). LaTeX kodunun derlenmesinden sonra, çok sayfalı PDF'yi kullanarak GIF'e dönüştürmelisiniz ImageMagick. Komut satırında aşağıdaki yapıyı kullanıyorum:
magick convert -verbose -density 300 -strip -resize 50% -layers OptimizePlus -delay 30 *.pdf myGIF.gif
Windows kullanmıyorsanız, baş harfini atlayın magick
Sonuç:
Düzenleme: AlexG'nin dediği gibi arka plan gerekli değildir, bayrağı -alpha removeiçinde kullanabilirsiniz convert. Bu nedenle geliştirilmiş bir kod (diğer bazı değişikliklerle birlikte):
\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usetikzlibrary{math}
\begin{document}
\foreach \xDom [count=\idFile] in {0.2,0.21,...,7.2} {
\begin{tikzpicture}
\tikzmath{
\samplePoints= ifthenelse(\xDom==0.2, 1, int(\xDom*100));
}
\begin{axis}[%title={test},
legend style={font=\fontsize{3}{3}\selectfont},
legend pos=south east,
axis lines=center,
domain=0.2:\xDom,
xmin=0.2,xmax=7.5,
ymin={1-exp(-0.2)*cos(3*deg(0.2))},
ymax=1.5,
xtick={0,1,...,7},
ytick={0,1,...,4},
samples=\samplePoints,
xlabel={}]
\draw[gray, dashed] (axis cs:0,1) -- (axis cs:7.2,1);
\addplot [color=red] gnuplot[id=gr\idFile] {1-exp(-x)*cos(3*x)};
\end{axis}
\end{tikzpicture}
}
\end{document}
Daha önce olduğu gibi, bu pdflatex.exe -shell-escape %.texçok sayfalı PDF'yi almak için ile ve ardından şununla derlenmelidir :
magick convert -verbose -density 300 -strip -resize 40% -alpha remove -layers OptimizePlus -delay 1 *.pdf myGif.gif
Ve sonuç: