我的问题
如何向正在绘制的图形添加绘图以便获得更精确的绘图?
我的代码
我正在学习如何绘制图表。
这是我使用的代码。您可以在图片上看到曲线并不平滑:应该使用更多绘图来绘制此图。
\begin{tikzpicture}[domain=-5:8]
\draw[very thin,color=gray] (-5.1,-1.6) grid (8.1,1.6);
\draw[->] (-5.2,0) -- (8.2,0) node[right] {$x$};
\draw[->] (0,-1.7) -- (0,1.7) node[right] {$\sin(x)$};
\draw[color=orange] plot function{sin(x)} ;
\end{tikzpicture}
答案1
您可以添加smooth
为选项。
\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}[domain=-5:8]
\draw[very thin,color=gray] (-5.1,-1.6) grid (8.1,1.6);
\draw[->] (-5.2,0) -- (8.2,0) node[right] {$x$};
\draw[->] (0,-1.7) -- (0,1.7) node[right] {$\sin(x)$};
\draw[color=orange] plot[smooth] function{sin(x)} ;
\end{tikzpicture}
\end{document}
功能强大pgfplots
,有一个samples
键,您可以使用它添加更多要绘制的数据点
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=10,
ymin=-2,ymax=2,grid=major,
]
\addplot[domain=0:4*pi,samples=500] {sin(deg(x))}; %% change samples value. you can also add smooth option
\end{axis}
\end{tikzpicture}
\end{document}
图表越多,samples
编译时间越长,就越平滑。有时建议gnuplot
从内部使用addplot
,因为 gnuplot 在计算方面更胜一筹。
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=10,
ymin=-2,ymax=2,grid=major,
]
\addplot[blue, samples=5000] gnuplot[domain = 0:4*pi] {sin(x)}; %% change samples value.
\end{axis}
\end{tikzpicture}
\end{document}
pgfplots
为绘图提供了很多好处。我建议您切换到它来满足绘图需求。
正如 Claudio Fiandrino 所建议的,您可以使用多功能tikz 库。对于开放曲线,hobby
有两个选项 -和 hobby`。quick hobby
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{hobby}
\begin{document}
\begin{tikzpicture}[domain=-5:8]
\draw[very thin,color=gray] (-5.1,-1.6) grid (8.1,1.6);
\draw[->] (-5.2,0) -- (8.2,0) node[right] {$x$};
\draw[->] (0,-1.7) -- (0,1.7) node[right] {$\sin(x)$};
\draw[color=orange] plot[quick hobby] function{sin(x)} ; % quick hobby or simply hobby
\end{tikzpicture}
\end{document}
答案2
您可以更改为pgfplots
\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=center,domain=-5:8, xlabel=$x$, ylabel=$y$]
\addplot[orange,smooth] {sin(deg(x))} ;
\end{axis}
\end{tikzpicture}
\end{document}