我正在使用 tikz 生成正弦和余弦图,每条曲线的末端都有箭头。箭头对于正弦曲线来说看起来不错,但对于余弦曲线来说却不是这样。为什么会出现这种情况?我该如何解决?
这是我的代码:
\documentclass[12pt]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=1,>=latex,x=0.5cm,y=2.0cm]
\draw[<->,thick,domain=-4*pi:4*pi,samples=250,color=red] plot (\x,{sin(\x r)}) node[below right] {\footnotesize \textcolor{red}{$y= \sin(x)$}};
\draw[<->,thick,domain=-4*pi:4*pi,samples=250,color=blue] plot (\x,{cos(\x r)}) node[right] {\footnotesize \textcolor{blue}{$y= \cos(x)$}};
\draw[->,thick] (-14,0) -- (14,0) node[below left]{\footnotesize $x$};
\draw[->,thick] (0,-2) -- (0,2) node[below right]{\footnotesize $y$};
\end{tikzpicture}
\caption{Graphs of sine and cosine}
\end{figure}
\end{document}
答案1
当 PGF 将箭头放在一条线上时,它会沿着最后一段路径“后退”,这样箭头尖端的末端就位于路径的末端。由于绘图(通常)是许多小直线,因此 PGF 会沿着最后一段直线后退。
当线段的梯度变化相对较慢时(如 MWE 中正弦曲线的端点),它看起来不错。否则(即 MWE 中余弦曲线的端点),它看起来就不好。
尽管 PGF 3.0 添加了许多用于弯曲和伸缩箭头的奇特功能,但我认为最简单的解决方案是延长第一段和最后一段线段。幸运的是,这很容易做到,只需使用shorten >
和shorten <
键消极的值。
\documentclass[border=5]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,bending}
\begin{document}
\begin{tikzpicture}[scale=1,>=latex,x=0.5cm,y=2.0cm]
\draw[<->,thick,domain=-4*pi:4*pi,samples=250,color=red] plot (\x,{sin(\x r)}) node[below right] {\footnotesize \textcolor{red}{$y= \sin(x)$}};
\draw[<->,thick,domain=-4*pi:4*pi,samples=250,color=blue,
shorten >=-4pt, shorten <=-4pt]
plot (\x,{cos(\x r)}) node[right=5pt] {\footnotesize \textcolor{blue}{$y= \cos(x)$}};
\draw[->,thick] (-14,0) -- (14,0) node[above left]{\footnotesize $x$};
\draw[->,thick] (0,-2) -- (0,2) node[below right]{\footnotesize $y$};
\end{tikzpicture}
\end{document}
答案2
问题是 Ti 中的箭头钾Z 不是附加到直线上,而是位于直线末端。由于余弦曲线末端的曲率很大,因此结果很丑陋(箭头方向是正确的……)。
我添加了两种你可以尝试的技巧。第一种是将图形缩短为曲率较低的部分(绿线),另一种是绘制带有蓝色箭头的 y=1 的不可见图形。
% arara: pdflatex
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[scale=1,>=latex,x=0.5cm,y=2.0cm]
\draw[<->,thick,domain=-4*pi:4*pi,samples=250,color=red] plot (\x,{sin(\x r)}) node[above right] {\footnotesize $y= \sin(x)$};
\draw[-,thick,domain=-4*pi:4*pi,samples=250,color=blue] plot (\x,{cos(\x r)}) node[right] {\footnotesize $y= \cos(x)$};
\draw[<->,>={LaTeX[]},draw opacity=0, domain=-4.1*pi:4.1*pi, color=blue] plot (\x, 1);
\draw[<->,thick,domain=-3.9*pi:3.9*pi,samples=250,color=green] plot (\x,-{cos(\x r)}) node[right] {\footnotesize $y= -\cos(x)$};
\draw[->,thick] (-14,0) -- (14,0) node[below left]{\footnotesize $x$};
\draw[->,thick] (0,-2) -- (0,2) node[below right]{\footnotesize $y$};
\end{tikzpicture}
\caption{Graphs of sine and cosine}
\end{figure}
\end{document}