绘制图形时添加点:如何使用 tikz 来做?

绘制图形时添加点:如何使用 tikz 来做?

我的问题

如何向正在绘制的图形添加绘图以便获得更精确的绘图?


我的代码

我正在学习如何绘制图表。

这是我使用的代码。您可以在图片上看到曲线并不平滑:应该使用更多绘图来绘制此图。

\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}

在此处输入图片描述

相关内容